`

大数据量导出Excel的方案[转]

    博客分类:
  • Java
阅读更多

 

试共同条件:
数据总数为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 excel大数据量导出demo,可支持模板导出

    这个"java excel大数据量导出demo"提供了一个高效、灵活的解决方案,它支持模板导出,分页查询,以及处理大数据量的能力。在这个项目中,开发者采用了Apache POI库的SXSSFWorkbook子类,这是一个专门为处理大量数据...

    java解决大批量数据导出Excel产生内存溢出的方案

    - 使用如JExcelApi、OpenCSV等其他第三方库,它们可能提供了更优化的数据导出方案,尤其是针对大数据量。 7. **优化Excel文件格式**: - 如果可能,可以考虑使用CSV格式代替Excel,因为CSV文件对内存的需求较低,...

    Java_批量导出大数据量Excel方法.zip

    3. **流式处理**: 使用POI的SXSSFWorkbook类可以实现流式处理,它会将数据写入磁盘,而不是内存,这对于大数据量导出非常有用。SXSSFWorkbook是一个低内存占用的API,它在后台维护一个有限大小的内存缓存,并将超出...

    多个excel导出压缩成zip 文件 数据量大导出

    1. **大数据量导出**: - 当数据量达到一定规模时,单个Excel文件可能无法容纳所有数据,或者导出和加载速度会显著降低。此时,将数据分割成多个Excel文件是一种有效的解决方案。 - 分片策略:可以按照数据量、...

    POI百万级大数据量EXCEL导出 - 请叫我猿叔叔的博客 - CSDN博客.htm

    POI百万级大数据量EXCEL导出 - 请叫我猿叔叔的博客 - CSDN博客.htm

    layui数据表格导出Excel插件

    layui数据表格导出Excel插件是一款为layui框架设计的实用工具,它允许用户方便地将layui数据表格中...总之,layui数据表格导出Excel插件提供了一个高效、便捷的解决方案,使得在layui项目中实现数据导出变得轻而易举。

    使用POI导出大数据量到EXCEL

    "使用POI导出大数据量到EXCEL"这个主题涉及到如何高效地利用POI处理大量数据并将其导出到Excel文件中。以下是对这个主题的详细讲解。 1. **Apache POI简介** Apache POI 是一个开源项目,它提供了Java API来创建、...

    plsql大数据量导出工具

    在Oracle数据库环境中,...综上所述,"plsql大数据量导出工具"结合了SQL*Loader、PL/SQL以及大数据处理的最佳实践,旨在提供一个高效、安全且灵活的解决方案,帮助用户在Oracle环境中轻松处理大规模数据的导出需求。

    java导出30万数据量的excel(采用生成多个excel,最后打包zip)

    在Java开发中,处理大数据量的Excel导出是一项常见的任务,尤其当数据量达到数十万条时,单个Excel文件可能会遇到性能瓶颈或格式限制。本项目针对这一问题提出了一种解决方案,即分块生成多个Excel文件,然后将它们...

    java多线程导出excel(千万级别)优化

    Java多线程导出Excel是处理大数据量时的一种高效策略,尤其在面对千万级别的数据时。传统的Apache POI库在处理大规模数据时可能会遇到栈溢出(StackOverflowError)和内存溢出(OutOfMemoryError)等问题,因为这些...

    处理大数据量excel

    这篇博文“处理大数据量excel”可能提供了针对这一问题的解决方案。博主分享了在处理大量数据时,如何利用编程工具和特定库来提升效率和性能。 首先,我们关注到标签中的“源码”和“工具”,这暗示了博主可能介绍...

    C#导出Excel复杂表头解决方案

    总的来说,通过C#结合NPOI库,开发者可以创建出具有复杂结构和样式的Excel文件,同时通过优化代码来提高性能,使得在大数据量下的导出操作也能保持流畅。这对于需要处理和展示大量数据的业务场景尤其重要。如果你...

    js导出excel.zip

    "js导出excel.zip"这个压缩包提供了一个解决方案,它结合了EasyUI和DataGrid组件,支持多表头和数据值的格式化功能,适用于QUICKUI和QUIGRID环境,生成的文件格式为.xls,即传统Microsoft Excel 97-2003格式。...

    Qt将Sqlite中的数据导出为Excel

    在IT行业中,数据库管理和...总的来说,Qt结合SQLite和Excel的能力,为开发者提供了灵活的数据导出解决方案。无论是在桌面应用程序还是服务器环境中,这个功能都能帮助用户更高效地管理和分析数据,从而提升生产力。

    C#实现几十万级数据导出 实 Excel及Excel各种操作实例.zip

    这个压缩包"**C#实现几十万级数据导出 实 Excel及Excel各种操作实例.zip**"提供了相关的代码示例和可能的解决方案,帮助开发者了解如何高效地处理大规模数据并导出到Excel格式。主要知识点包括: 1. **大量数据处理...

    SpringBootMybatis+poi+Thymeleaf实现excel文件数据导入到数据库以及从数据库将数据导出成excel.zip

    在本项目中,"SpringBootMybatis+poi+Thymeleaf实现excel文件数据导入到数据库以及从数据库将数据导出成excel.zip",我们主要关注的是如何利用Java技术栈来处理Excel文件,并与数据库进行交互。以下是相关知识点的...

    poi多线程大数据导出excel文件.zip

    本项目“poi多线程大数据导出excel文件”提供了一个解决方案,利用多线程来提高Excel的大数据导出效率。 Apache POI 3.1版本是较早的版本,而项目中使用了更新的4.1版本,这意味着它可能利用了更多优化和新特性。在...

    防止GridView导出到excel中自动转成科学计数法

    2. **性能考虑**:如果GridView中的数据量非常大,频繁调用`RowDataBound`事件可能会影响性能。可以考虑优化数据加载逻辑或采用分页技术来减少一次性加载的数据量。 ### 总结 通过上述方法,我们可以有效地避免在...

    asp.net 导出数据与图片到excel

    7. **性能优化**:对于大数据量的导出,可以分批处理数据,或者在服务器端生成CSV文件,让客户端使用Excel打开,这样可以避免内存占用过大。 8. **错误处理和安全**:确保正确处理可能出现的异常,例如文件不存在、...

Global site tag (gtag.js) - Google Analytics