[alibaba/easyexcel]读取第一行数据为null(实际从第二行开始读取)

2024-03-07 928 views
8

最近在维护一个古老的系统,不方便升级easyexcel(v2.2.6),发现一个问题。很简单的读取,就一列数据,没有表头,但是断点发现从第2行读取,然后最后还多读取了一行,导致结果就是条数对的,但是最后一个元素是null的。excel内容如下:

企业微信截图_16873391511045

运行时如下:

企业微信截图_16873380749389

看的出来是读取的2 3 4 5行数据,listener就比较简单了:

public class ExcelListener<T> extends AnalysisEventListener<T> {
    @Override
    public void invoke(T object, AnalysisContext context) {
        //当前行
        // context.getCurrentRowNum()
        if (object != null) {
            datas.add(object);
        }
    }

在不升级的情况下,这个问题怎么解决?

回答

8

通过设置headRowNumber(0)解决了,但是另外一个问题还存在,就是多读取了末尾的空行,说是要升级版本,只能先在invoke里面判断一下。

5

你的理解和解决方式都是对的。 excel reader 默认是有表头的