POI导入大批量Excel数据,解决OOM问题(可支持几十万以上)

本文介绍如何使用xlsx-streamer库高效读取大型.xlsx文件,通过调整缓存大小避免内存溢出问题。适用于Excel 2007及以上版本,不支持2003版本。文章详细说明了配置缓存参数及迭代读取数据的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用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) {
                // 遍历列
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一茗道人nview

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值