Java POI实现大批量数据导出到excel
发布日期:2021-11-18 19:17:42
浏览次数:10
分类:技术文章
本文共 3033 字,大约阅读时间需要 10 分钟。
用JavaPOI导出Excel时,应该考虑到Excel版本及数据量的问题。针对不同的Excel版本,要采用不同的工具类。
-
HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls;一张表最大支持65536行数据,256列,也就是说一个sheet页,最多导出6w多条数据
-
XSSFWorkbook:是操作Excel2007的版本,扩展名是.xlsx;它的一张表最大支持1048576行,16384列
-
SXSSFWorkbook:是从POI 3.8版本开始,提供了一种基于XSSF的低内存占用的API,也就是XSSF的加强版
话不多说,上代码(demo)
jar包依赖,看官自己去官网搜一下
public class Test1 { public static List getUser() throws ParseException{ List
当导出的数据较大时(我在导出时,大概30000左右的数据),会导致系统报错:
HTTP Status 500 - Handler processing failed; nested exception is java.lang.OutOfMemoryError: GC overhead limit exceeded
也就是内存溢出
这个时候就要体现SXSSFWorkbook的重要性了
在 创建工作簿的时候,加入判断
Workbook wb =null;
if(list.size()<1000){
wb= new XSSFWorkbook(); }else{
wb= new SXSSFWorkbook();
}
从SXSSFWorkbook官网上我们可以知道:实现“BigGridDemo”策略的流式XSSFWorkbook版本。这允许写入非常大的文件而不会耗尽内存,因为任何时候只有可配置的行部分被保存在内存中。您可以提供用作书面数据基础的模板工作簿。有关详细信息,请参见。请注意,仍然可能会消耗大量内存,这些内存基于您正在使用的功能,例如合并区域,注释......仍然只存储在内存中,因此如果广泛使用,可能需要大量内存。SXSSFWorkbook默认使用内联字符串而不是共享字符串表。这非常有效,因为没有文档内容需要保存在内存中,但也被称为制作与某些客户不兼容的文档。在启用共享字符串的情况下,文档中的所有唯一字符串必须保存在内存中。根据您的文档内容,这可能比共享字符串被禁用时使用更多的资源。在决定是否启用共享字符串之前,请仔细检查您的内存预算和兼容性需求。
转载地址:https://blog.csdn.net/weixin_39207535/article/details/86532151 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月17日 10时01分19秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
spring 启动之全过程 源码解析
2019-04-27
Spring AOP 原理
2019-04-27
mysql 分库分表分区 动态扩容 总结
2019-04-27
分布式事务 四种方案
2019-04-27
redis和spring整合
2019-04-27
iis6 和iis7s上整个网站重定向
2019-04-27
iis7 url重写和重定向
2019-04-27
navicat工具来将SQL Server数据迁移到MySQL
2019-04-27
微信公众号从头开发(接入与消息)
2019-04-27
端口占用 杀死进程
2019-04-27
XStream xml与javabean之间的互转
2019-04-27
Android应用构建:10:使用sdkmanager管理sdk
2019-04-27
Node-RED使用指南:21:限速的消息抛弃或者消息队列机制
2019-04-27
Node-RED使用指南:22:定制化Node的使用方法
2019-04-27
Node-RED使用指南:23:嵌入Node.js应用
2019-04-27
Node-RED使用指南:24:嵌入到Angular应用中
2019-04-27
2019年DevOps最新现状研究报告解读
2019-04-27
Node-RED使用指南:27:使用docker节点操作容器
2019-04-27
socat使用指南:5:打开MacOS上的Remote API服务
2019-04-27
Node-RED使用指南:25:安装节点的常见方式
2019-04-27