wangguanquan / eec

A fast and lower memory excel write/read tool.一个非POI底层,支持流式处理的高效且超低内存的Excel读写工具
https://github.com/wangguanquan/eec/wiki
Apache License 2.0
178 stars 54 forks source link

读取excel,已删除数据的行,仍存在空值。Row.isEmpty()方法为false #160

Closed bob798 closed 3 years ago

bob798 commented 3 years ago

当从文件A复制10行到文件B,然后删除文件B中的后9行。 这时文件B,只有第一行肉眼可见,但读取时后就并不为空。

我的解决办法:如果当前row的第一个及第二个单元格均为空,既getString(1).isBlank == true,我就直接跳过。

wangguanquan commented 3 years ago

Office是如下定义空行的

not contains any filled, font, border, formatted or value

如果使用Del删除了9行单元格的值,Office有可能还保留了样式等其它信息,你可以试试点左侧的行编号->删除选中行试试看,或者像你做的那样,使用业务主键来判断。 ExcelReader.read(Paths.get("abc.xlsx")).sheets().flatMap(Sheet::rows).filter(row -> isNotEmpty(row.getString(0))).forEach(System.out::println); 需要注意的是row.getString下标是从0开始的