使用xlsx-streamer读取 .xlsx格式文件,可将部分数据按次缓存到内存中,已经读取的数据进行GC处理,解决OOM问题。只支持 Excel2007版本,不支持Excel2003版本。

1、导入包:xlsx-streamer.jar

      注意(我也是使用了好几个版本):poi3.9版本,只支持搭配 xlsx-streamer-1.0.0.jar,其他版本不兼容;poi4.0可使用streamer2.0。

2、读取方式修改

Workbook wb = StreamingReader.builder()

                      .rowCacheSize(100)        // 缓存内存页数(默认10)

                      .bufferSize(1024)            // 缓存内存字节(默认1024)

                      .open(fis);                       // 文件(FileInputStream())

// getNumberOfSheets() 可获取所有Sheet页数

3、后面继续wb的循环读取操作(注意:只能用逐个遍历,for 或 iterator(),无法使用 getRow(i) 、getCell(i) 来按需获取数据,StreamingReader读取方式不支持)

        for (Row row : sheet) {
            // 遍历行


            for (Cell cell : row) {
                // 遍历列
            }
        }

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐