[alibaba/easyexcel]读取xlsx文件,结果不正确

2024-06-24 451 views
3

test.xlsx.zip 测试文件见附件。 使用github下载最新的代码进行测试,结果和文件不一致。 image

使用的测试用例为: read.v07.Read2007Xlsx.noModel()

回答

9

翻了下代码,XlsxRowHandler 这个类用了个字符串数组

private String[] curRowContent = new String[20];

会根据列的数量动态扩容

        if (curCol >= curRowContent.length) {
            curRowContent = Arrays.copyOf(curRowContent, (int)(curCol * 1.5));
        }

输出的时候转成 List,数组多出来的列就变成 null 了

registerCenter.notifyListeners(new OneRowAnalysisFinishEvent(Arrays.asList(curRowContent)));

我感觉可以直接定义成 List curRowContent = new ArrayList<>(); 可以解决这个问题

可能是为了保证输出的每一行,列的数量都一样?

4

原来是为了解决空 cell 的问题。。好吧

9

由于1.0.*版本核心考虑的是怎么解决读excel内存溢出问题,自己重写了读excel的POI的底层,写仍旧使用POI。可以从根本解决OOM问题。但是由于自己对excel的格式认识不全面,有很多坑产生了很多BUG。最新版本以POI为底层。最新版:1.1.2-beat1,虽然不能完全解决OOM但可以解决大部分的OOM问题,完全解决OOM版本会等稳定后再开放,敬请理解。目前稳定版本1.1.2-beat1