参考代码
var filepath = "my.xlsx"; // 这文件有100w行数据,大小50m
var eclx = new XSSFWorkbook(filepath); // 执行到这句的时候,Xmx配置4G,都撑不住
var sxssfWorkbook = new SXSSFWorkbook(eclx,1000);
SXSSFWorkbook
号称是针对大数据的excel,进行部分行读取的新类型。然而,他的new过程,需要先new出一个XSSFWorkbook
,才可以实例化。但是往往在new XSSFWorkbook
的时候,内存就爆了,试问又如何能顺利执行到new SXSSFWorkbook
?
说明你没仔细看文档……
SXSSFWorkbook
能低内存是只支持写的大文件,并不支持读大文件。读大文件用 POI 的话目前只有 SAX 事件驱动或者
StreamingReader
这两种办法。