用POI制成EXCEL下载,数据量大时
内存溢出,有什么样的解决办法?
现在网上基本方法是:
1.使用CSV下载。
2.调大JVM ,Tomcat的内存。
目前这两种方法客户都不同意,大家还有什么方法吗?
------解决方案--------------------内存溢出是因为加载的数据太多导致的。
既然这样,你可以将数据分开加载出来,然后分别导出到多个表单或多个文件中。
也就是说按分页查询来进行导出。
------解决方案--------------------Excel 2010 和 Excel 2007 中 (即xlsx格式)工作表的大小为 16,384 列 × 1,048,576 行。
不知道能不能满足要求,不能的话就txt保存,不过可能文件过大,打开较慢
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------管理hibernate的缓存机制,hibernate的session中有flush,clear等方法,可以让内存消耗小一点
------解决方案--------------------可以生成多个临时excel文件。。然后合并成一个excel文件。。写一个合并的类。。。
------解决方案--------------------这问题 哥曾经遇到过,客户非要所有的数据都导出来,有时候数据量很大,甚至超过了EXCEL的最大行数,实在变态,后来的思路是:分割成多个小EXCEL文件,然后用Java的 ZIP类库的方法压缩成XXX.zip文件导出下载。
------解决方案--------------------这个问题我也研究过,最终也是生成多个excel文件打zip包得。内存溢出的原因是由于数据量太大了,说白了就是由于创建的cell对象太多了,导致内存溢出,我没有找到更好的解决方案,jxl也可以导出excel,不过会不会溢出,不过excel2003最大行数为65535,你的数据量如果溢出的话,还是需要生成2007的。
------解决方案--------------------不知楼主的数据库支持导出数据位excel不,如果支持的话,可以先讲数据插入临时表,然后导出。这个方法有点烂。