试共同条件:
数据总数为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秒 |
20000数据/sheet |
30.1秒 |
30000数据/sheet |
28.1秒 |
40000数据/sheet |
26.5秒 |
50000数据/shee |
28.2秒 |
55000数据/sheet |
26.8秒 |
59000数据/sheet |
30.1秒 |
59500数据/sheet |
发生假死机现象 |
60000数据/sheet |
发生假死机现象 |
但是导出的数据为XML不是纯正的Excel文件,如使用Excel文件的xls后缀保存,打开文件会弹出警告,但不影响阅读。
且经实际测试,在Access2007和Access2003中可通过导入外部数据的方式,将导出的XML导入进Access数据库。
三、总结
项目要求是大数据量导出Excel文件,POI、JXL、FastExcel不能完全满足要求;使用XML 的电子表格导出实现了大数据量导出,但是格式为XML不是纯正的Excel文件,为曲线救国。两种导出形式的比较,如表5所示。
表5:合并5万数据所用时间
|
POI、JXL、FastExcel |
XML 的电子表格 |
导出数据格式 |
为纯Execl文件 |
为XML文件 |
导出数据量 |
小 |
较大 |
能否分Sheet |
能 |
能 |
能否添加样式 |
能 |
能 |
能否添加图片 |
POI 能 |
不能 |
导出数据能否导入Access |
能 |
能 |
分享到:
相关推荐
快逸报表是面向软件开发人员的、高性价比、易学易用的JAVA报表工具软件。快逸报表提供了高效的报表设计方案、强大的报表展现能力、灵活的部署机制,并且具备强有力的填报功能,为中小规模用户的数据统计分析、展现...
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
非常好看的报表,3D饼型,柱形,适合做企业级开发的报表开发!
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
本文提出了可重用的通用报表处理系统的概念,力图建立可重用的通用报表处理平台,从而在根本上解决报表处理系统的重复开发问题。这样的报表处理平台只需要开发一次,就可以方便地应用到不同的管理信息系统或企业资源...
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字 Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,...
JClass ServerReport是一个100%纯Java 服务器端组件库,能在您的J2EE基于服务器的Java应用程序中动态的生成定制的Adobe Acrobat PDF 文档,为您的用户提供专业的,高质量,可随处打印的定制报表。JClass Server...
第4章 hbm2java和hbm2ddl工具 4.1 创建对象-关系映射文件 4.1.1 定制持久化类 4.1.2 定制数据库表 4.2 建立项目的目录结构 4.3 运行hbm2java工具 4.4 运行hbm2ddl工具 4.5 使用XML格式的配置文件 ...
通用报表工具的根本原则是要使丌发出来的工具软件面向各类普通用 户,并适应用户的时变需要。在开发通用报表工具的时候,由于我们面向的用户 主要是MIs等管理类普通报表的用户,因此,我们主要考虑以下功能需求: 1...
Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字 Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,...
第4章 hbm2java和hbm2ddl工具 4.1 创建对象-关系映射文件 4.1.1 定制持久化类 4.1.2 定制数据库表 4.2 建立项目的目录结构 4.3 运行hbm2java工具 4.4 运行hbm2ddl工具 4.5 使用XML格式的配置文件 ...
第4章 hbm2java和hbm2ddl工具 4.1 创建对象-关系映射文件 4.1.1 定制持久化类 4.1.2 定制数据库表 4.2 建立项目的目录结构 4.3 运行hbm2java工具 4.4 运行hbm2ddl工具 4.5 使用XML格式的配置文件 ...
第4章 hbm2java和hbm2ddl工具 4.1 创建对象-关系映射文件 4.1.1 定制持久化类 4.1.2 定制数据库表 4.2 建立项目的目录结构 4.3 运行hbm2java工具 4.4 运行hbm2ddl工具 4.5 使用XML格式的配置文件 ...
NULL 博文链接:https://tianqinghua.iteye.com/blog/732238