[alibaba/easyexcel]3.2.2版本设置headRowNumber为非1的数字时,读到的表格数据都是空的

2024-01-04 767 views
2
建议先去看文档

快速开始常见问题

提示的异常或者没有达到的效果

大家尽量把问题一次性描述清楚,然后贴上全部异常,这样方便把问题一次性解决掉。 至少大家要符合一个原则就是,能让其他人复现出这个问题,如果无法复现,肯定无法解决。

回答

5

CommonReadListener readExcelDataListener = new CommonReadListener(commonService, commonParams, clazz, headRowNumber);

        EasyExcel.read(inputStream, clazz, readExcelDataListener)
                .sheet(sheetName).headRowNumber(2)

这样调用读取,然后监听中去获取读取的内容 @Override public void invoke(T data, AnalysisContext context) { 这边的data返回是空的,但是当不设置这个headRowNumber或者设置为1时是正常可以读取的

3

没有3.2.2这个版本,说的是不是3.3.2这个版本,测试没有问题

EasyExcel.read(fileName, DemoData.class, new PageReadListener<DemoData>(dataList -> {
            for (DemoData demoData : dataList) {
                log.info("读取到一条数据{}", JSON.toJSONString(demoData));
            }
        })).sheet().headRowNumber(1).doRead();

image 可以加一个doRead();试试

5
        EasyExcel.read(in, clazz, new PageReadListener<T>(dataList -> {
            for (T data : dataList) {
            }
        })).sheet().headRowNumber(2).doRead();

我也遇到了,试了下楼上的,设置2,还是null 。 dataList数量正确,但是data的属性全为null

8

我这边测试没有问题,可以对数据脱敏一下,给我数据,我测试一下

3

没事了,原来是表格头严格匹配。

  • (共3行) 也就是1行的表格头,2行数据。测试设置为headRowNumber 为2
  • (共3行) 也就是2行的表格头,1行数据。设置为headRowNumber 为 1

就会null ,我也才看到 @ExcelProperty 的 name或者index 哪里的文字。可能匹配关系?还只建议设置一个 以前我都2个都设置。。

正确匹配就读取正常了

8

我这边debug 了个把小时. 发现是 实体类里面如果有1个字段 缺少 ExcelProperty 注解. 导致另1个别字段 下标错误. 被覆盖了.. 读取的数据也是null

7

默认不加ExcelProperty 的注解的都会参与读写,加了ExcelIgnoreUnannotated注解,没加ExcelProperty 不会参与读写