用jxl导出上万条数据list数据过大导致内存溢出出了怎么办啊 各位大哥

 POI或者JXL在导出大量数据的时候由於它们将每一个单元格生都成一个Cell对象,所以很容易导致list数据过大导致内存溢出出解决这个问题,唯一的办法是弄清楚Excel的二进制格式(汗)并且用流的方式读写Excel。POI和JXL其实提供了二进制方式读写Excel的API只是因为缺少文档和实例,所以使用的人不多我编写了这个简单的合并Excel嘚类,它只适合合并结构相同的多个Excel文件好在这个功能已经可以解决数据导出产生OOM的问题:将数据分批导出然后合并。

下面的代码使用POI3.1合并11个3000多行的文档用时约6秒,我实在找不到更多的测试用的文档了

* 将多个Xls文件合并为一个,适用于只有一个sheet并且格式相同的文档 //以苐一篇文档的最后一个sheet为根,以后的数据都追加在这个sheet后面 //遍历当前文档的每一个record //记录原来的索引和现在的索引的对应关系 //调整SST索引的对應关系

POI或者JXL在导出大量数据的时候由於它们将每一个单元格生都成一个Cell对象,所以很容易导致list数据过大导致内存溢出出解决这个问题,唯一的办法是弄清楚Excel的二进制格式(汗)并且用流的方式读写Excel。POI和JXL其实提供了二进制方式读写Excel的API只是因为缺少文档和实例,所以使用的人不多我编写了这个简单的合并Excel嘚类,它只适合合并结构相同的多个Excel文件好在这个功能已经可以解决数据导出产生OOM的问题:将数据分批导出然后合并。 
下面的代码使用POI3.1合并11个3000多行的文档用时约6秒,我实在找不到更多的测试用的文档了

我要回帖

更多关于 list数据过大导致内存溢出 的文章

 

随机推荐