-
关于POI生成报表大数据量的问题0
我们在做一个报表导出的功能,WEB 容器Server使用TOMCAT6,JVM可用的内存范围只有512M,导出报表使用excel需要下载到本地。
现在遇到性能问题,我现在采用的是POI的HSSF导出,导出的数据来自数据库中的多个表,列最多时,列的个数为110列,如果数据一次性导出会OutOfMemory。
我们现在的做法是,每8K条记录导出到一个Excel的一个Sheet,为一个文件;写成多个文件,最后把生成的多个文件打包成一个压缩包反回客户端。但是现在的需求是,只要生成一个Excel文件,希望能达到20W行,在内存512的范围内,求解决方案。如果有知道POI Event 生成的方式,希望提供些指导性文章或者Demo。能找到的资料不多。
求有经验的高手指导!!2014年6月08日 23:57
5个答案 按时间排序 按投票排序
-
首先确定一下你的格式,到底是xlsx还是xls,看你说想要有20万行,我印象里面xls是没法到20万行的(最多65535行),列也有限制(貌似255),但是xlsx是没这个限制的(或者说限制宽松很多)
如果是xlsx的话,你可以新建一个xlsx文件,然后把后缀改成zip,然后解压缩,看看生成的结果,是一堆文本文件。然后你加一行数据,再改后缀,解压缩,看看结果,你会发现,xlsx文件的更新实际上就是更新xml的一个操作。
那么你应该明白了,你后台需要做的就是做xml文件,然后zip压缩后把后缀改成xlsx,这样的话,不会涉及到POI那些很耗内存的操作,应该是很容易做到你要的效果的。
如果是xls格式,那么首先行数达不到你的要求。如果强行要做,那么推荐你还是先把数据查出来放在文本文件里面,然后调用另一个process来在外部运行来完成这步工作(或者干脆连查询所有的事情都交给外部进行,这时候是启动另一个java虚拟机,占用的是别的内存,甚至可以交给别的server来干这件事),你的程序可以轮询这个工作做完没有,做完后再下载。
说实话,我觉这种需求的正路就是应该是异步另外一个process去做,做完之后再下载。
否则用户画面上点个按钮,数据量超大的情况下你让他等20分钟是不是很蠢?应该给他一个机制告诉他这个事很花时间,现在正在做,做完后让他自己下载是比较合适的作法。
如果一定要在画面上的一次请求搞定的话,参考我说的用xlsx或者轮询另外一个process的作法应该能搞定你的需求。2014年6月09日 16:53
相关推荐
poi生成报表,倒进去直接能运行,新人很值得参考,附带poi最新的包
使用Poi读取大数据量excel的方法 支持2003和2007的版本
java 使用 poi 解析导入大数据量(几万数据量+)时,报出OOM。这是使用POI 第二种处理方法,解决大数据量导入内存溢出问题,并提升效率
apache软件基金 poi组件 轻松实现,生成excel报表
python抓取高德POI数据,突破数据量限制,包含了python脚本程序和相关输入文件
java版本的使用POI导出大数据量到EXCEL
POI百万级大数据量EXCEL导出 - 请叫我猿叔叔的博客 - CSDN博客.htm
poi生成wordpoi生成wordpoi生成wordpoi生成wordpoi生成wordpoi生成wordpoi生成wordpoi生成wordpoi生成word
poi导入导出excel生成报表
解决poi大数据量导出excel的代码,该代码中所用的jar包是poi3.9。在测试过程中单个sheet中导出20万数据没有问题。
使用java Apache poi 根据word模板生成word报表 仅支持docx格式的word文件,大概是word2010及以后版本,doc格式不支持。 使用说明:https://blog.csdn.net/u012775558/article/details/79678701
POI报表Word导出
poi读取大数据量excel文件,避免内存溢出,行级操作 根据本网站的资源修改的。 将一些类路径错误全部进行了修正。 另外,需要自己在类路径里,放spring-context.jar和spring-beans.jar包。
Java POI 生成Word文档,支持图片插入,关键是修改XML部分,本人已测试通过。
java poi导出大量数据到Excel
基于POI的JSP动态报表生成技术
poi读取大量数据会造成gc内存溢出的报错,由于垃圾回收机制无法将大量的对象及时的回收,而这些对象又会保存在内存中,会导致内存不够用的情况,这时候我们就需要使用新的方法,读取为cvs即可.此解决方案可支持千万数据的...
1.java使用poi生成excel插入图表曲线 2.demo包含完成jar包 3.主要用途是过滤数据自动生成曲线图
NULL 博文链接:https://javaedge-yc.iteye.com/blog/1308714
技术使用poi,实际功能为html文件转换成word, 生成pdf格式合同,html生成图片,生成html格式合同,下载解压缩即可运行