2 sinat 33415638 sinat_33415638 于 2016.03.30 17:36 提问

poi处理excel大数据量的导入会报内存溢出

XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(fileName()));
就是单独执行这行代码都不行,报内存溢出,我把虚拟机都设置成最大了也溢出
差不多10万行吧

3个回答

daidaineteasy
daidaineteasy   Ds   Rxr 2016.03.30 19:06

LZ可以试试分批处理,如下,当list中接收到的数据到1W条后,就先去去保存到数据库中,
同时将list清空,等待接收接下来的内容,直到将数据接收完毕

     while(判断excel文件中是否还有信息){
        list.add(XXX);
        num ++;
        if(num >= 10000){
        执行导入操作,同时将list清空,将num置为0
        }
    }

    if(null != list && list.size() > 0){
        执行导入操作,同时将list清空(这是对剩余数据的操作)
    }
sinat_33415638
sinat_33415638 一般涉及到求和的地方都会这么大数据量,其实输出也就10几行
2 年多之前 回复
daidaineteasy
daidaineteasy 回复sinat_33415638: 要不,直接把10W条记录一次性的加载到虚拟机的内存中,很容易内存溢出。
2 年多之前 回复
daidaineteasy
daidaineteasy 回复sinat_33415638: 那你是需要显示到页面上么,如果显示的话,可以做一个类似分页的功能,就把excel当成数据库,通过分页的方式从excel中查询数据进行展示。
2 年多之前 回复
sinat_33415638
sinat_33415638 我这个没有涉及到数据库,我都是直接从表进行操作的
2 年多之前 回复
sinat_33415638
sinat_33415638 我这个没有涉及到数据库,我都是直接从表进行操作的
2 年多之前 回复
CSDNXIAOD
CSDNXIAOD   2016.03.30 17:42

poi大数据量excel导入
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.03.30 18:45

可以参考这:poi的eventmodel写的大数据量的excel的读取程序。
http://gaosheng08.iteye.com/blog/624758
或者换一种excel操作工具jxf。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
使用Poi读取大数据量excel的方法
使用Poi读取大数据量excel的方法 支持2003和2007的版本
解决poi读取excel2007出现内存溢出问题代码参
解决poi读取excel2007出现内存溢出问题代码参
poi 自己写的excel sax方式导入大量数据
poi 方式导入 大量excel数据,将excelDir目录下文件考入f盘即可测试
java poi大数据量 导出excel
java中使用poi导出Excel大批量数据 存在两个导出方法:存在一个分批量导出ZIP文件,一个导出exel文件
POI导出Excel万级数据分页实现 解决内存溢出问题
一个POI导出Excel万级数据分页实现 解决内存溢出问题 完整的 project demo 有数据库dmp文件
java解决大批量数据导出Excel产生内存溢出的方案
java解决大批量数据导出Excel产生内存溢出的方案
poi excel导入导出
poi excel 导入 导出poi excel 导入 导出poi excel 导入 导出poi excel 导入 导出poi excel 导入 导出poi excel 导入 导出
POI处理大数据量的Excel文件, 不内存溢出
从http://download.csdn.net/detail/whatismvc/3696185 和http://download.csdn.net/detail/whatismvc/3694229 下载的, 处理大数据量的Excel 2007文件不内存溢出,我试过的最大数据是 26000行,222列的xlsx。
海量数据导入
javaPOI3.8大数据量导入防止内存溢出。 按行操作
java-poi导出导入excel文件到数据库
java-poi导入excel文件内容到数据库,导出数据库内容到本地excel