大数据量导出Excel的方案

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-02 04:14 点击:

测试共同条件:  
数据总数为110011条,每条数据条数为19个字段。  
电脑配置为:P4 2.67GHz,1G内存。  
 
一、POI、JXL、FastExcel比较  
POI、JXL、FastExcel均为java第三方开源导出Excel的开源项目。  
 
导出方案一:一次性全部导出到一个Excel文件中。  
实际情况均报OutOfMemery错误,以下数据为报OutOfMemery数据时,数据到的最大数据数目,如表1所示:  
表1:报OutOfMemery错误时所能处理的数据量  
                                       FastExecl    POI      JXL  
10000数据/sheet             37465     28996   42270  
5000数据/sheet               39096     31487   46270  
3000数据/sheet                39000    32493   47860  
小结:  
多分sheet能一定程度上减少内存的使用,但是均因为程序中创建的Cell(即为Excel中的一个单元格)无法释放,消耗大量内存,导致OutOfMemery错误;JXL表现最好,创建Cell内存使用较少。  
 
导出方案二:先分多个Excel文件将数据全部导出,然后对多个Excel文件进行合并。  
首先,测试将全部数据导出所用的时间,如表2所示,数据均测试三次取平均。  
表2:导出全部数据所用时间  
                                 FastExecl    POI    JXL  
10000数据/文件             68s          33s   30s  
5000数据/文件               68s          32s   33s  
3000数据/文件               59s          33s   39s  
小结:  
均成功导出Excel文件,原因是导出一个Excel文件,释放所占用的创建Cell的内存。  
FastExecl表现最差,POI表现稳定,JXL随着数据的增大,速度一定程度上增快。  
 
然后,进行整合,由于将多Excel合并成一个Excel文件的功能只有POI所有,故使用POI测试,结果如表3所示。  
注:数据量大合并还会报OutOfMemery错误,故合并总数据量以5万为准。  
表3:合并5万数据所用时间  
时间  
10000数据/文件 11s  
5000数据/文件 11s  
3000数据/文件 11s  
小结:  
使用POI对文件进行合并速度较快,但有数据量的限制。  
 
 
总结:方案二比较可行,但是数据量有限制,为5万条。  
 
 
二、导出XML 的电子表格  
导出的格式类似为纯文本,能实现大数据量的存储,并能实现分Sheet查看,且能添加简单的样式,符合项目要求。经实际测试Excel2003和Excel2007均能识别并正常打开查看。使用时间测试如表4所示,数据均测试3次取平均。  
表4:生成全部数据所用时间  
                                   时间  
10000数据/sheet      28.0秒  

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • Request.ServerVariables 参数大全
      • 执行全文索引时出现权限不足的解决方法
      • 导入excel文件处理流程节点的解决方案
      • 查看sql修改痕迹(SQL Change Tracking on Table)
      • MongoDB安装为Windows服务方法与注意事项
      • App数据层设计及云存储使用指南
      • PostgreSQL启动过程中的那些事三:加载GUC参数
      • 写给MongoDB开发者的50条建议Tip1
      • Percolator与分布式事务思考(二)
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1