现在网上基本方法是:
1.使用CSV下载。
2.调大JVM ,Tomcat的内存。
目前这两种方法客户都不同意,大家还有什么方法吗?
内存溢出是因为加载的数据太多导致的。
既然这样,你可以将数据分开加载出来,然后分别导出到多个表单或多个文件中。
也就是说按分页查询来进行导出。
Excel 2010 和 Excel 2007 中 (即xlsx格式)工作表的大小为 16,384 列 × 1,048,576 行。
不知道能不能满足要求,不能的话就txt保存,不过可能文件过大,打开较慢
我已经在使用模拟数据,不走后台了。但还是过不了28000这关口,更别提60000了。数据生成过程从来不报异常,java.lang.OutOfMemoryError: Java heap space全是在生成Excel时出来的。
我尝试过了用循环直接生成,分段生成不断读写文件两种方式,总是回报java.lang.OutOfMemoryError: Java heap space这个异常。
可以生成多个临时excel文件。。然后合并成一个excel文件。。写一个合并的类。。。
,poi生成excel文档确实有数据量的问题,也是在28000行左右的数据,超过一定量的数据,必然会有这样的问题。
当时的解决办法是改成csv,别的没办法。
我也遇到过这样的问题,但是只是在本地机器上会出现内存溢出情况,
如果把应用程序部署到服务器上,由于服务器性能原因,基本上能够满
足客户需求,暂时没出现过内存溢出现象,所以我建议你去服务器上试试(
开大JVM内存也可以试试,悄悄的,不给他说,哈哈)。
如果实在不行,我就建议使用cvs下载了(客户不会不同意吧,这类后缀
名的文件,基本上默认就是用excel方式打开的,基本上不会有什么影响吧)