使用Apache POI的SXSSFworkbook实现大量数据导出到Excel文件
Apache POI是一个开源的、用来读写微软Excel文件的Java工具包,一般用来读取Excel文件中的数据或者将数据导出到Excel文件。HSSFWorkbook用来处理早期版本的Excel文件(xls格式),而XSSFWorkbook用来处理新版本Excel文(xlsx格式)。
Apache POI包中的HSSFWorkbook、XSSFWorkbook、SXSSFWorkbook的区别如下:
- HSSFWorkbook:一般用于操作Excel2003以前(包括2003)的版本,扩展名是.xls。
- XSSFWorkbook:一般用于操作Excel2007及以上的版本,扩展名是.xlsx。
- SXSSFWorkbook(POI 3.8+版本):一般用于大数据量的导出。比如数据量超过5000条即可考虑这种工作表
————————————————
引用原文链接:https://blog.csdn.net/wh445306/article/details/103755283
使用SXSSFWorkbook导出Excel的代码如下
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.DataFormat;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.xssf.streaming.SXSSFCell;
import org.apache.poi.xssf.streaming.SXSSFRow;
import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.io.File;
import java.io.FileOutputStream;
import java.util.List;/*** 将数据导出成Excel文件,使用Apache POI组件。* Java POI三种Workbook:HSSFworkbook,XSSFworkbook,SXSSFworkbook主要区别:https://blog.csdn.net/wh445306/article/details/103755283*/
public class ExportExcelUtil {private static final Logger logger = LoggerFactory.getLogger(ExportExcelUtil.class);/*** 创建Excel文件内容,并写入本地文件。** @param headers Excel表格头* @param cellList Excel表格数据内容* @param path 存储路径,如:"D:/xxx.xlsx"*/public static void writeExcelToFile(String[] headers, List<Object[]> cellList, String path) {FileOutputStream fos = null;try {File excelFile = new File(path);fos = new FileOutputStream(excelFile);//使用SXSSFWorkbook导出数据,可以防止数据量过大时,内存被耗尽问题SXSSFWorkbook swb = new SXSSFWorkbook(); //一般用于大数据量的导出,比如数据量超过5000条即可考虑这种工作表SXSSFSheet sheet = swb.createSheet("Sheet1");DataFormat format = swb.createDataFormat();CellStyle style = swb.createCellStyle();style.setAlignment(HorizontalAlignment.LEFT); //单元格左对齐style.setDataFormat(format.getFormat("@")); //设置单元格为文本格式SXSSFRow headerRow = sheet.createRow(0); //第一行标题部分for (int i = 0; i < headers.length; i++) {String headerName = headers[i];SXSSFCell cell = headerRow.createCell(i); //从0开始cell.setCellValue(headerName);cell.setCellType(CellType.STRING); //单元格内容为文本类型cell.setCellStyle(style);}int dataRow = 1; //数据部分,从第2行开始for (Object[] objArr : cellList) {SXSSFRow row = sheet.createRow(dataRow); //创建一行for (int i = 0; i < objArr.length; i++) {String text = objArr[i] != null ? objArr[i].toString() : "";SXSSFCell cell = row.createCell(i); //从0开始cell.setCellValue(text);cell.setCellStyle(style);}dataRow++;}swb.write(fos);fos.flush();}catch (Exception e) {logger.error("[writeExcelToFile][path:{}][ERROR:{}]", path, e.getMessage(), e);}finally {try {if (fos != null) {fos.close();}} catch (Exception e) {logger.error("[writeExcelToFile][close IOException:{}]", e.getMessage(), e);}}}
}
参考文章
参考了文章:Java POI三种Workbook:HSSFworkbook,XSSFworkbook,SXSSFworkbook主要区别
https://blog.csdn.net/wh445306/article/details/103755283
相关文章:
使用Apache POI的SXSSFworkbook实现大量数据导出到Excel文件
Apache POI是一个开源的、用来读写微软Excel文件的Java工具包,一般用来读取Excel文件中的数据或者将数据导出到Excel文件。HSSFWorkbook用来处理早期版本的Excel文件(xls格式),而XSSFWorkbook用来处理新版本Excel文(xl…...
【技术选型】Java 定时任务
文章目录 背景一、基础1.1 Cron表达式1.2 定时任务的三大组成部分 二、Java做定时任务的技术方案比较2.1、JDK seelp实现定时任务2.2、JDK Timer & TimerTask 实现定时任务2.3、JDK ScheduledExecutorService2.4、Quartz框架2.5、Spring Task 中的 schedule2.6、Elastic-Jo…...
让你立刻学会指针
☃️个人主页:fighting小泽 🌸作者简介:目前正在学习C语言和数据结构 🌼博客专栏:C语言学习 🏵️欢迎关注:评论👊🏻点赞👍🏻留言💪&am…...
重塑元宇宙体验!元宇宙实时云渲染解决方案来了
元宇宙作为人工智能、云计算和数字孪生等前沿技术的结合体,近年来越发受到各大企业重视。 元宇宙的应用场景层出不穷,不仅包括营销推广场景,还有品牌活动和电商销售,能有效提升品宣和商业转化效果。 元宇宙也具有极大的建设价值…...
Node【Global全局对象】
文章目录 🌟前言🌟Global全局对象🌟Global对象属性与方法🌟Global对象属性🌟process🌟Buffer类🌟console 🌟写在最后 🌟前言 哈喽小伙伴们,新的专栏 Node 已…...
【技术】《Netty》从零开始学netty源码(四十一)之PoolChunk
PoolChunk 我们再回顾以下netty中与内存相关的类: 前面我们已经分析了PoolSubpag,本章我们分析PoolChunk,先看下它的属性值: 为了更好的理解这些属性值,我们结合它的构造函数来理解,具体的源码如下: 其…...
新建虚拟机更改ip(连接xshell)
# 查看网络设备 [rootcentos79 ~]# nmcli device DEVICE TYPE STATE CONNECTION ens32 ethernet 已连接 ens32 ens33 ethernet 已连接 ens33 virbr0 bridge 已连接 virbr0 lo loopback 未托管 -- # 查看…...
什么是VBST和PVST?两者有啥区别?
在计算机网络中,VLAN(Virtual Local Area Network,虚拟局域网)是一种将局域网划分为多个逻辑上独立的子网的技术,它可以帮助网络管理员更好地管理网络资源。 在VLAN技术中,STP(Spanning Tree P…...
记录-JavaScript常规加密技术
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 当今Web开发中,数据安全是一个至关重要的问题,为了确保数据的安全性,我们需要使用加密技术。JavaScript作为一种客户端编程语言,可以很好地为数据进行加…...
二十三、高级网络技术及应用——BFD解析
文章目录 前言一、BFD 简介1、概述:2、作用: 二、静态路由调用 BFD1、配置静态 BFD2、配置动态 BFD 三、OSPF联动BFD四、BFD 单臂回声(one arm echo) 前言 BFD:Bidirectional Forwarding Detection,双向转…...
大家经常说的java八股文到底是什么?让我来总结一下吧!
八股文问题集合 面试必看java八股文 问题正在收录中,累了休息一会,如果有需要请,先关注,这几天会更帖子,答案后续补上 文章目录 八股文问题集合问题正在收录中,累了休息一会,如果有需要请&#…...
C++备忘录模式实践:轻松实现撤销与恢复功能
目录标题 引言(Introduction)备忘录模式定义及核心概念(Memento Pattern Definition and Core Concepts)备忘录模式的定义(Definition of Memento pattern)备忘录模式的主要角色(Key roles in M…...
如何选择CDN加速平台?
现如今全球CDN市场规模逐年攀升,在2017年全球CDN市场规模约为75亿美元,到2021年增长到200亿美元左右。我国CDN行业同样保持高速发展,自2017年的135亿元增长到2022年的300亿元左右。但是国内的CDN市场规模仅为全球市场的15%-20%,海外CDN市场空间巨大。 接…...
其实苹果知道自己离不开中国制造,因此悄悄给自己留了后路
苹果在加速离开中国,不过从苹果的做法却又可以看到它其实很清醒地认识到无法离开中国制造,因此它在力推印度制造的时候,其实并没拼尽全力,深刻认识到印度制造和印度市场与中国的差距。 一、印度制造和印度市场与中国的差距 2022年…...
必用WhatsApp营销的4个理由
WhatsApp是世界上最受欢迎的消息传递应用程序。每天有1万新用户加入WhatsApp。各种规模的公司都利用该平台与世界各地的客户进行有效的沟通,这要归功于其广泛的覆盖范围、用户友好的设计和安全的端到端加密。因此,WhatsApp聊天机器人迅速普及。 1.为您的…...
Python从入门到精通9天(异常的处理)
异常处理 异常处理语句多个异常raise关键字常见的异常类型自定义异常 异常处理语句 在了解异常处理之前,我们先对它的语句进行说明,如下: try:表示测试代码块以查找错误 except:表示处理错误 finally:表…...
微服务学习——Docker
初识Docker 项目部署的问题 大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题: 依赖关系复杂,容易出现兼容性问题开发、测试、生产环境有差异 Docker Docker如何解决依赖的兼容问题的? 将应用的Libs(函数库)、 Deps…...
QMS-云质说质量 - 5 解决中小企业质量问题的钥匙在哪里?
云质QMS原创 转载请注明来源 作者:王洪石 引言 一个小小的质量问题可能引发蝴蝶效应 日常生活中,我们每天都会遇到各种各样的问题,并随着它们喜怒哀乐。企业也不例外,即使有很好的管理体系以及非常高素质的员工,一些错…...
基于Java+Spring+vue+element社区疫情服务平台设计和实现
基于JavaSpringvueelement社区疫情服务平台设计和实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 …...
实战项目:手把手带你实现一个高并发内存池
项目介绍 1.这个项目做的是什么? 当前项目是实现一个高并发的内存池,他的原型是google的一个开源项目tcmalloc,tcmalloc全称Thread-Caching Malloc,即线程缓存的malloc,实现了高效的多线程内存管理,用于替…...
【期刊征稿 | 录用后最快当月见刊,刊后1个月检索,且检索稳定】第九届艺术、教育与管理国际学术会议(ICAEM 2026) - 第二期
录用后最快当月见刊,刊后1个月检索,且检索稳定 | 含ISSN号,DOI,封面目录 第九届艺术、教育与管理国际学术会议(ICAEM 2026) - 第二期 2026 9th International Conference on Arts, Education and Management 2026年…...
ZStack控制台报错Failed to connect to console排查指南
1. 问题现场还原:不是连接失败,而是控制台页面直接报错弹窗Zstack 打开控制台报错——这六个字背后藏着一个在私有云运维一线高频出现、却常被误判为“网络不通”或“浏览器问题”的典型故障。我第一次遇到它是在给某制造企业做ZStack 4.5.2升级后的验收…...
一个月 SQL 学习总结:LeetCode 高频 SQL 50 题刷题心得
最近花了一个月时间系统学习 SQL,主要是跟着 LeetCode 的「高频 SQL 50 题(基础版)」进行练习。 回过头来看,这一个月的学习虽然不算特别长,但让我对 SQL 的理解比以前清晰了很多,也积累了一些适合初学者的…...
Perseus补丁:碧蓝航线全皮肤解锁完整指南与快速配置教程
Perseus补丁:碧蓝航线全皮肤解锁完整指南与快速配置教程 【免费下载链接】Perseus Azur Lane scripts patcher. 项目地址: https://gitcode.com/gh_mirrors/pers/Perseus 还在为碧蓝航线中那些精美皮肤需要付费而烦恼吗?想要免费体验所有舰娘的不…...
使用 Taotoken CLI 工具一键配置团队开发环境中的大模型端点
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用 Taotoken CLI 工具一键配置团队开发环境中的大模型端点 在团队协作开发中,统一管理大模型 API 的接入配置是一个常…...
同事悄悄告诉我,他月薪比我高1.8万,岗位一模一样。我去问HR,HR说,薪资保密。我才明白,保密的从来不是他的,是我的
最近看到一个帖子,有人说,他在公司干了三年,一直以为自己的薪资还算正常,直到有一天,关系不错的同事喝多了,把工资条拍给他看。两个人同一天入职,同一个岗位,同一个绩效评级。差了1.…...
Godot原生强化学习集成:零Python实现AI训练与部署
1. 这不是又一个“Hello World”式教程:为什么GodotRL的组合值得你花10分钟认真看我第一次在Godot Asset Library里点开那个标着“Reinforcement Learning Agent”的插件时,心里是带着怀疑的——毕竟过去三年里,我试过七种不同方式把强化学习…...
Taotoken的Token Plan套餐如何让我的消费更可控
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken的Token Plan套餐如何让我的消费更可控 1. 从按量计费到Plan套餐的决策 在持续使用大模型API进行项目开发的过程中&#…...
BotW Save Manager:打破平台壁垒的《塞尔达传说:旷野之息》存档转换神器
BotW Save Manager:打破平台壁垒的《塞尔达传说:旷野之息》存档转换神器 【免费下载链接】BotW-Save-Manager BOTW Save Manager for Switch and Wii U 项目地址: https://gitcode.com/gh_mirrors/bo/BotW-Save-Manager 你是否曾在Switch和WiiU之…...
3分钟免费搞定Windows桌面分区:NoFences让你的工作效率翻倍
3分钟免费搞定Windows桌面分区:NoFences让你的工作效率翻倍 【免费下载链接】NoFences 🚧 Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 你是否厌倦了在杂乱无章的Windows桌面上浪费时间寻找文…...
