[alibaba/easyexcel]使用泛型去接受数据,一直接收不到

2024-05-24 202 views
3

import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener;

import com.alibaba.fastjson.JSON; import com.candao.log4dc.logger.Logger;

import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;

/**

  • @author Ray lei
  • @date 2019/11/25 22:39
  • @Description 监听器 */ public class ExcelDataListener extends AnalysisEventListener {

    private List result = new ArrayList<>();

    private Map<Integer, String> header = new HashMap<>();

    @Override public void invoke(T t, AnalysisContext analysisContext) { Logger.info("解析到一条数据:{}", t); result.add(t); }

    @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { Logger.info("解析一共解析{}条数据",result.size()); Logger.info("所有数据解析完成!"); }

    public List getResult() { return result; }

    public Map<Integer, String> getHeader() { return header; }

    /**

    • 这里会一行行的返回头
    • @param headMap
    • @param context */ @Override public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) { this.header = headMap; Logger.info("解析到一条头数据:{}", JSON.toJSONString(headMap)); }

    @Override public void onException(Exception exception, AnalysisContext context) throws Exception { Logger.error("解析数据异常!!!", exception); super.onException(exception, context); } }

回答

8

public class ExcelDataListener extends AnalysisEventListener<这里指定接收的数据泛型> {

5

public class ExcelDataListener extends AnalysisEventListener { 这样也不行的

1

里面是有泛型的 但是贴代码到github被忽略了

5

image image 这样都读取不到

5

image

1

AnalysisEventListener只是指定接收数据的类型,也就是invoke方法的类型,你还需要指定Excel的实体类型

EasyExcel.read(fileName, DataDemo.class, new DemoDataListener<DataDemo>()).sheet().doRead();

这边的实体类不可以省

4

我这边调试了一下 image 这里赋值bujin不进去

7

image 这里时泛型传进去的,没办法指定

6

image 这里已经能拿到数据了。

0

image 找到原因了,实体类贴了@Accessors(chain = true)这个导致的

1

image 找到原因了,实体类贴了@accessors(chain = true)这个导致的

好吧,easyExcel对模型的映射依赖getter setter,所以如果getter setter不正常就没办法的

2

谢谢你。

1

你代码怎么写的 能分享一下么 传到github看一下?