JAVA关于POI导出Excel内存溢出的解决方案
2015-05-16 20:02
295 查看
JAVA关于POI导出Excel内存溢出的解决方案
在我们使用JAVA开发过程中,经常要导出查询获得的数据,这些数据一般情况下都是以Excel存储的,因此我们在导出数据的时候要使用JAVA的POI库,其主要是对各种windows平台的数据格式进行操作,在这里,我们是对Excel操作。生成Excel的过程原理是这样的,首先,我们对数据库进行查询,获取相应的结果集,一般是list集合,然后生成Workbook对象,根据生成的Workbook对象获取sheet对象,根据此sheet对象获取Row对象,再根据Row对象获取Cell对象,最后设置cell单元格的值,循环生成Row和Cell对象,将list中的值写入Cell中,写完后,将Workbook对象写入相应的流对象即可。
在上述过程中,若list集合的数据不多,不会出现问题,倘若list中的数据足够多(几万条以上),则会导致内存溢出,导出失败。
其解决方案就是我们分批导出,每次查询固定数量的list数据集合,将其中的数据写入一个Workbook对象中,依次循环,直至将所有的数据写如Workbook中,此解决方案会生成多个Workbook对象,在供浏览器下载的时候也会有问题,因此,我们还要对生成的多个Excel文件进行打包压缩,即调用操作系统的tar命令(一般来说应用都部署在linux环境下)生成一个压缩包,下载此压缩包即可。
注:在讲Workbook对象写入OutputStream流中,在构建OutputStream时其路径不能是web容器中的路径,否则永远只能生成一个Workbook对象,原因不明
相关文章推荐
- poi导出excel内存溢出解决办法
- 关于java poi导入导出excel的包冲突问题
- 关于Java内存溢出详解及解决方案的文章的转载
- 关于javapoi导出Excel的Demo
- 关于JAVA 用POI 导出Excel
- 关于JAVA 用POI 通过EXCEL模板 导出Excel
- 关于poi导出大数据量EXCEL导出缓慢的解决方案--生成xml格式的表格文件(注意xls格式为03 07下格式会不一样)
- POI导出大量数据的简单解决方案(附源码)-Java-POI导出大量数据,导出Excel文件,压缩ZIP(转载自iteye.com)
- 大数据导出Excel导致内存溢出的解决方案
- 关于JAVA 用POI 通过EXCEL模板 导出Excel
- 关于Java Web 使用 POI 将 数据库表 导出 Excel 的完整实例
- Java导入excel大量数据出现内存溢出解决方案
- 关于Poi读取Excel引发内存溢出问题的解决方法
- 解决POI大数据导出Excel内存溢出、应用假死
- java poi excel关于数据碰撞和excel数据追加
- Java 使用POI 实现Excel 的导出
- JAVA POI将数据导出保存到EXCEL 的一些方式
- java使用poi导出excel的内容,同时可以利用反射进行动态获取信息
- JAVA 关于web页面下载导出Excel通用方法
- java中使用poi导出数据到EXCEL模板中。