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

问题描述

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

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

解决方案

poi大数据量excel导入

解决方案二:

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

解决方案三:

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

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

    if(null != list && list.size() > 0){
        执行导入操作,同时将list清空(这是对剩余数据的操作)
    }
时间: 2024-11-21 04:37:09

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

【Itext】解决Itext5大并发大数据量下输出PDF发生内存溢出outofmemery异常

  尼玛,这个问题干扰了我两个星期!!   关键字 itext5 outofmemery 内存溢出 大数据 高并发 多线程 pdf 导出 报表 itext 并发   在读<<iText in Action 2nd>4.3节(Dealing with large tables)的时候,书上写道:itext5PdfPTable实现了ILargElement的接口,只需要我们手动设置datatable.setComplete(false);之后,它就可以自动将表格元素输出到document中,

MySQL大数据量之导入导出命令详解

面对大数据量,大文件的sql操作,我们需要借助mysql强大的命令操作: 1. 数据库导入命令  代码如下 复制代码 mysql -h localhost -u root -p   use dbname source backup.sql 说明:需要使用命令连接上数据库并选择相应数据库才能使用. 2. 数据库备份命令 MySQL的导出命令mysqldump,基本用法是:  代码如下 复制代码 mysqldump [OPTIONS] database [tables] 说明:不能先连接数据库,是直

oracle大数据量的导入和导出

oracle|数据 在oracle中批量数据的导出是借助sqlplus的spool来实现的.批量数据的导入是通过sqlload来实现的.大量数据的导出部分如下:/*************************** *  sql脚本部分 demo.sql begin **************************//************************** * @author meconsea * @date 20050413 * @msn meconsea@hotmail.

导出大数据量excel,用POI

问题描述 导出大数据量excel,用POI 需要导出的数据量可能非常大(超过10W条),而且要照顾到没装07Excel的机器,不能用SXSSFworkbook.鉴于一个sheet页最多65000多条记录,那么大数据就需要多个sheet页.由于导出前要先查数据库,是应该一次查出所有数据然后导出还是分次查询?每次查询65000条数据? 解决方案 这么大的文件,excel 2003未必能打开.建议分页存入多个excel文件. 解决方案二: 看速度和效率了,分次是不是速度还快点

MySQL大数据量导入导出方法比较

硬件: Intel(R) Xeon(R) CPU 5130 @ 2.00GHz * 2, 4G RAM, 564G SAS 软件: Red Hat Enterprise Linux AS release 4 (Nahant Update 4) 2.6.9 42.ELsmp (32-bit), MySQL 5.0.27-standard-log 总记录数: 1016126, 每行平均大小 46822 1. 导出测试 1.1 导出成文本 方法: SELECT * INTO OUTFILE '/bac

Mysql大数据量的导出导入方法比较

硬件: Intel(R) Xeon(R) CPU 5130 @ 2.00GHz * 2, 4G RAM, 564G SAS 软件: Red Hat Enterprise Linux AS release 4 (Nahant Update 4) 2.6.9 42.ELsmp (32-bit), MySQL 5.0.27-standard-log 总记录数: 1016126, 每行平均大小 46822 1. 导出测试1.1 导出成文本 方法: SELECT * INTO OUTFILE '/back

poi3 8大数据导出-poi3.8大数据量Excel导出连续查询导出不同的报表后导出速度非常慢

问题描述 poi3.8大数据量Excel导出连续查询导出不同的报表后导出速度非常慢 poi3.8用((SXSSFSheet)sheet).flushRows()方法解决了大数据量的excel导出,但是我在使用过程中,由于每个单元格都要设置不同的颜色和数据格式,发现导出第一张报表时速度还勉强可以接受,但是继续导出另一张报表,速度就慢的跟蜗牛似的,要10分钟甚至3个小时,请问有什么方法可以解决? 代码如下: private static void fillExcel(KDTable kdtRepor

J2EE 大数据量报表导出

问题描述 对报表功能有个疑问,一般用户导出报表数据都是全部导出的吗?系统现在有一个表,数据量为百万,用户筛选自己的数据后估计也有几十万,在页面显示当然通过分页显示了,如果用户要导出excel或pdf的话,是不是要把这几十万的数据全部导出啊?这么大的数据肯定很占内存,这个要怎么处理?谢谢!!! 解决方案 首先需要将任务放到队列中进行导出,或者先一个线程也可以了,解决用户等待问题可以用流导出到csv文件,当然也是要分文件,比如一个文件导出10w条如果要导出到excel,可以采用poi,但是一个exc

大数据量下高并发同步的讲解(不看,保证你后悔)(转)

  对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了.而并发问题是绝大部分的程序员头疼的问题, 但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一起来研究一下常见的并发和同步吧. 为了更好的理解并发和同步,我们需要先明白两个重要的概念:同步和异步 1.同步和异步的区别和联系 所谓同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到 返回的值或消息后才往下执行其它的命令. 异步,执行完函数或方法后