POI、JXL、FastExcel性能比较

试共同条件: 1 r* l& C7 Y: ~% Y
数据总数为110011条,每条数据条数为19个字段。 oa.headware.cn:8888) Y' c3 b$ K% S& n$ L0 _

POI、JXL、FastExcel比较 信息平台5 O- B; J9 T! B- p/ w
POI、JXL、FastExcel均为java第三方开源导出Excel的开源项目。
D: /$ H1 Y, Z1 H- [
导出方案一:一次性全部导出到一个Excel文件中。
实际情况均报OutOfMemery错误,以下数据为报OutOfMemery数据时,数据到的最大数据数目,如表1所示: oa.headware.cn:8888( H" S3 v& j+ F
表1:报OutOfMemery错误时所能处理的数据量 & ~# w/ B) K/ b' I$ u4 w

 FastExeclPOIJXL
10000数据/sheet374652899642270
5000数据/sheet390963148746270
3000数据/sheet390003249347860

小结:
多分sheet能一定程度上减少内存的使用,但是均因为程序中创建的Cell(即为Excel中的一个单元格)无法释放,消耗大量内存,导致OutOfMemery错误;JXL表现最好,创建Cell内存使用较少。 oa.headware.cn:8888; p! Y' K/ n0 E, {% Z$ P. W
6 K9 L* t* e" b" J8 I
导出方案二:先分多个Excel文件将数据全部导出,然后对多个Excel文件进行合并。 7 C5 U6 Q$ a( i9 @/ |' u
首先,测试将全部数据导出所用的时间,如表2所示,数据均测试三次取平均。
表2:导出全部数据所用时间

 FastExeclPOIJXL
10000数据/文件68s33s30s
5000数据/文件68s32s33s
3000数据/文件59s33s39s

小结: # j+ a# z7 t/ /& F& j' ^$ ^
均成功导出Excel文件,原因是导出一个Excel文件,释放所占用的创建Cell的内存。
FastExecl表现最差,POI表现稳定,JXL随着数据的增大,速度一定程度上增快。

然后,进行整合,由于将多Excel合并成一个Excel文件的功能只有POI所有,故使用POI测试,结果如表3所示。 oa.headware.cn:88884 P! T, ~' A" p) h# @% r& E- }  V; g
注:数据量大合并还会报OutOfMemery错误,故合并总数据量以5万为准。 信息平台" a: x! Z1 |6 i$ B+ W+ A
表3:合并5万数据所用时间

 时间
10000数据/文件11s
5000数据/文件11s
3000数据/文件11s

小结: 3 `7 h6 @# g8 p1 ?
使用POI对文件进行合并速度较快,但有数据量的限制。

Y9 O) d
总结:方案二比较可行,但是数据量有限制,为5万条。

$ k% l, U+ j
二、导出XML 的电子表格
导出的格式类似为纯文本,能实现大数据量的存储,并能实现分Sheet查看,且能添加简单的样式,符合项目要求。经实际测试Excel2003和Excel2007均能识别并正常打开查看。使用时间测试如表4所示,数据均测试3次取平均。   /7 ~, T' G/ V8 g3 l  v
表4:生成全部数据所用时间

 时间
10000数据/sheet28.0秒
20000数据/sheet30.1秒
30000数据/sheet28.1秒
40000数据/sheet26.5秒
50000数据/shee28.2秒
55000数据/sheet26.8秒
59000数据/sheet30.1秒
59500数据/sheet发生假死机现象
60000数据/sheet发生假死机现象


但是导出的数据为XML不是纯正的Excel文件,如使用Excel文件的xls后缀保存,打开文件会弹出警告,但不影响阅读。
且经实际测试,在Access2007和Access2003中可通过导入外部数据的方式,将导出的XML导入进Access数据库。
7 {9 Q! /3 W7 N5 a. E
三、总结 信息平台* c2 a: y# N/ p3 U8 _/ {& f  `$ }
项目要求是大数据量导出Excel文件,POI、JXL、FastExcel不能完全满足要求;使用XML 的电子表格导出实现了大数据量导出,但是格式为XML不是纯正的Excel文件,为曲线救国。两种导出形式的比较,如表5所示。 信息平台& {. U/ G- o6 O. C/ ^
表5:合并5万数据所用时间

 POI、JXL、FastExcelXML 的电子表格
导出数据格式为纯Execl文件为XML文件
导出数据量较大
能否分Sheet
能否添加样式
能否添加图片POI 能不能
导出数据能否导入Access

提高JVM的大小几乎没效果……
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值