我是靠谱客的博主 无情墨镜,最近开发中收集的这篇文章主要介绍超大Excel读取和写出(支持50万+)(一)超大Excel读取和写出(支持50万+),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

超大Excel读取和写出(支持50万+)

一、现状

假设我们的测试或生产环境的内存条件有限,比如说2GB(当然小数据的导入和导出不在本文的讨论范围,因为导入和导出它们几乎不存在内存溢出问题)。

这里,我们假如:项目中有50W条及以上数据需要进行excel导入和导出。使用普通的POI包中HSSFWorkbook(2003版及以前的版本)和XSSFWorkbook(2007版及以后的版本),
很容易造成内存溢出,从而无法实现正确的导入导出功能。

这个时候我们应该应该怎么办呢?

  • 增加测试或生产环境的内存大小,比如说分配100GB甚至是更大的内存
  • 使用POI的事件驱动模式实现消耗较低地内存大小实现导入10w、50w、甚至更多的数据

当然本文主要探讨的是第二种方案的实现及细节问题。第一个解决方案往往因为我们的客观限制并不是那么容易实现,所以我个人也比较推荐遇到这类问题,使用
第二种方法解决此类问题。

二、技术前瞻

POI提供了HSSF和XSSF的API可以自JAVA中读取修改xls/xlsx文件,但是自面对大文件时就容易报出OOM,
因此提供了接口可以以流式的方式读取/写入(xls/xlsx)。

excel类型普通数据量超大数据量
xls读写均支持(HSSF即可)仅支持流式读取
xlsx读写均支持(XSSF即可)读写均支持(sax流式读取;SXSSF流式写出)

鉴于目前我们项目中使用的均是office2007以后的版本,所以xls的读写在这里就不做过多演示和说明。

三、超大数据量导入和导出

  • 超大Excel文件读取(支持50w+)
  • 超大Excel文件写出(支持50w+)

最后

以上就是无情墨镜为你收集整理的超大Excel读取和写出(支持50万+)(一)超大Excel读取和写出(支持50万+)的全部内容,希望文章能够帮你解决超大Excel读取和写出(支持50万+)(一)超大Excel读取和写出(支持50万+)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部