当前位置: 首页 > news >正文

使用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工具包&#xff0c;一般用来读取Excel文件中的数据或者将数据导出到Excel文件。HSSFWorkbook用来处理早期版本的Excel文件&#xff08;xls格式&#xff09;&#xff0c;而XSSFWorkbook用来处理新版本Excel文&#xff08;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…...

让你立刻学会指针

☃️个人主页&#xff1a;fighting小泽 &#x1f338;作者简介&#xff1a;目前正在学习C语言和数据结构 &#x1f33c;博客专栏&#xff1a;C语言学习 &#x1f3f5;️欢迎关注&#xff1a;评论&#x1f44a;&#x1f3fb;点赞&#x1f44d;&#x1f3fb;留言&#x1f4aa;&am…...

重塑元宇宙体验!元宇宙实时云渲染解决方案来了

元宇宙作为人工智能、云计算和数字孪生等前沿技术的结合体&#xff0c;近年来越发受到各大企业重视。 元宇宙的应用场景层出不穷&#xff0c;不仅包括营销推广场景&#xff0c;还有品牌活动和电商销售&#xff0c;能有效提升品宣和商业转化效果。 元宇宙也具有极大的建设价值…...

Node【Global全局对象】

文章目录 &#x1f31f;前言&#x1f31f;Global全局对象&#x1f31f;Global对象属性与方法&#x1f31f;Global对象属性&#x1f31f;process&#x1f31f;Buffer类&#x1f31f;console &#x1f31f;写在最后 &#x1f31f;前言 哈喽小伙伴们&#xff0c;新的专栏 Node 已…...

【技术】《Netty》从零开始学netty源码(四十一)之PoolChunk

PoolChunk 我们再回顾以下netty中与内存相关的类&#xff1a; 前面我们已经分析了PoolSubpag&#xff0c;本章我们分析PoolChunk,先看下它的属性值&#xff1a; 为了更好的理解这些属性值&#xff0c;我们结合它的构造函数来理解&#xff0c;具体的源码如下&#xff1a; 其…...

新建虚拟机更改ip(连接xshell)

# 查看网络设备 [rootcentos79 ~]# nmcli device DEVICE TYPE STATE CONNECTION ens32 ethernet 已连接 ens32 ens33 ethernet 已连接 ens33 virbr0 bridge 已连接 virbr0 lo loopback 未托管 -- # 查看…...

什么是VBST和PVST?两者有啥区别?

在计算机网络中&#xff0c;VLAN&#xff08;Virtual Local Area Network&#xff0c;虚拟局域网&#xff09;是一种将局域网划分为多个逻辑上独立的子网的技术&#xff0c;它可以帮助网络管理员更好地管理网络资源。 在VLAN技术中&#xff0c;STP&#xff08;Spanning Tree P…...

记录-JavaScript常规加密技术

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 当今Web开发中&#xff0c;数据安全是一个至关重要的问题&#xff0c;为了确保数据的安全性&#xff0c;我们需要使用加密技术。JavaScript作为一种客户端编程语言&#xff0c;可以很好地为数据进行加…...

二十三、高级网络技术及应用——BFD解析

文章目录 前言一、BFD 简介1、概述&#xff1a;2、作用&#xff1a; 二、静态路由调用 BFD1、配置静态 BFD2、配置动态 BFD 三、OSPF联动BFD四、BFD 单臂回声&#xff08;one arm echo&#xff09; 前言 BFD&#xff1a;Bidirectional Forwarding Detection&#xff0c;双向转…...

大家经常说的java八股文到底是什么?让我来总结一下吧!

八股文问题集合 面试必看java八股文 问题正在收录中&#xff0c;累了休息一会&#xff0c;如果有需要请&#xff0c;先关注&#xff0c;这几天会更帖子&#xff0c;答案后续补上 文章目录 八股文问题集合问题正在收录中&#xff0c;累了休息一会&#xff0c;如果有需要请&#…...

C++备忘录模式实践:轻松实现撤销与恢复功能

目录标题 引言&#xff08;Introduction&#xff09;备忘录模式定义及核心概念&#xff08;Memento Pattern Definition and Core Concepts&#xff09;备忘录模式的定义&#xff08;Definition of Memento pattern&#xff09;备忘录模式的主要角色&#xff08;Key roles in M…...

如何选择CDN加速平台?

现如今全球CDN市场规模逐年攀升&#xff0c;在2017年全球CDN市场规模约为75亿美元,到2021年增长到200亿美元左右。我国CDN行业同样保持高速发展,自2017年的135亿元增长到2022年的300亿元左右。但是国内的CDN市场规模仅为全球市场的15%-20%&#xff0c;海外CDN市场空间巨大。 接…...

其实苹果知道自己离不开中国制造,因此悄悄给自己留了后路

苹果在加速离开中国&#xff0c;不过从苹果的做法却又可以看到它其实很清醒地认识到无法离开中国制造&#xff0c;因此它在力推印度制造的时候&#xff0c;其实并没拼尽全力&#xff0c;深刻认识到印度制造和印度市场与中国的差距。 一、印度制造和印度市场与中国的差距 2022年…...

必用WhatsApp营销的4个理由

WhatsApp是世界上最受欢迎的消息传递应用程序。每天有1万新用户加入WhatsApp。各种规模的公司都利用该平台与世界各地的客户进行有效的沟通&#xff0c;这要归功于其广泛的覆盖范围、用户友好的设计和安全的端到端加密。因此&#xff0c;WhatsApp聊天机器人迅速普及。 1.为您的…...

Python从入门到精通9天(异常的处理)

异常处理 异常处理语句多个异常raise关键字常见的异常类型自定义异常 异常处理语句 在了解异常处理之前&#xff0c;我们先对它的语句进行说明&#xff0c;如下&#xff1a; try&#xff1a;表示测试代码块以查找错误 except&#xff1a;表示处理错误 finally&#xff1a;表…...

微服务学习——Docker

初识Docker 项目部署的问题 大型项目组件较多&#xff0c;运行环境也较为复杂&#xff0c;部署时会碰到一些问题: 依赖关系复杂&#xff0c;容易出现兼容性问题开发、测试、生产环境有差异 Docker Docker如何解决依赖的兼容问题的? 将应用的Libs(函数库)、 Deps&#xf…...

QMS-云质说质量 - 5 解决中小企业质量问题的钥匙在哪里?

云质QMS原创 转载请注明来源 作者&#xff1a;王洪石 引言 一个小小的质量问题可能引发蝴蝶效应 日常生活中&#xff0c;我们每天都会遇到各种各样的问题&#xff0c;并随着它们喜怒哀乐。企业也不例外&#xff0c;即使有很好的管理体系以及非常高素质的员工&#xff0c;一些错…...

基于Java+Spring+vue+element社区疫情服务平台设计和实现

基于JavaSpringvueelement社区疫情服务平台设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 …...

实战项目:手把手带你实现一个高并发内存池

项目介绍 1.这个项目做的是什么&#xff1f; 当前项目是实现一个高并发的内存池&#xff0c;他的原型是google的一个开源项目tcmalloc&#xff0c;tcmalloc全称Thread-Caching Malloc&#xff0c;即线程缓存的malloc&#xff0c;实现了高效的多线程内存管理&#xff0c;用于替…...

WuliArt Qwen-Image Turbo效果对比:FP16黑图频发 vs BF16稳定出图实测

WuliArt Qwen-Image Turbo效果对比&#xff1a;FP16黑图频发 vs BF16稳定出图实测 1. 引言&#xff1a;从“黑图”困扰到稳定出图 如果你用过一些本地部署的文生图模型&#xff0c;可能遇到过这样的糟心事儿&#xff1a;满怀期待地输入一段描述&#xff0c;点击生成&#xff…...

Qwen3.5-9B快速上手:3步启动WebUI(supervisorctl restart)超详细步骤

Qwen3.5-9B快速上手&#xff1a;3步启动WebUI&#xff08;supervisorctl restart&#xff09;超详细步骤 1. 开篇介绍 Qwen3.5-9B是一款拥有90亿参数的开源大语言模型&#xff0c;具备强大的逻辑推理、代码生成和多轮对话能力。特别值得一提的是&#xff0c;它的多模态变体Qw…...

Nature Microbiology|质粒驱动的抗菌素耐药性进化:插入序列介导的基因失活新机制

背景 抗菌素耐药性&#xff08;AMR&#xff09;是全球公共卫生面临的严峻挑战。细菌进化出耐药性的主要途径包括基因突变和通过水平基因转移&#xff08;Horizontal Gene Transfer, HGT&#xff09;获得外源耐药基因。在后者中&#xff0c;接合质粒扮演了核心角色&#xff0c;它…...

ContentProvider call方法在跨进程通信中的高效实践

1. ContentProvider call方法入门&#xff1a;跨进程通信的新选择 第一次接触ContentProvider的call方法时&#xff0c;我还在用广播和AIDL处理跨进程通信。那会儿每次看到项目里复杂的AIDL接口定义和广播接收代码就头疼&#xff0c;直到发现这个被很多人忽略的"宝藏方法&…...

Tauri Android 打包原理与实战指南

Tauri Android 打包原理与实战指南 基于 JoyaLand 项目的实际打包经验整理,记录原理、流程与踩坑解决方案。 一、Tauri Android 打包架构原理 1.1 整体架构 ┌─────────────────────────────────────────────┐ │ …...

基于LCL滤波器的光伏三相逆变并网模型 1.模型由光伏系统,逆变器,LCL滤波器和交流主网组成 2

基于LCL滤波器的光伏三相逆变并网模型1.模型由光伏系统&#xff0c;逆变器&#xff0c;LCL滤波器和交流主网组成 2.光伏采用扰动观测法实现最大功率输出&#xff0c;逆变器采用恒定直流母线电压控制策略 实现以下目标&#xff1a; 1.光伏维持在最大功率输出。 2.逆变器实现直流…...

哪些降重软件可以同时降低查重率和AIGC疑似率?2026届TOP5硬核评测与选择建议

【CSDN 深度评测 / 突破算法封锁的毕业指南】 近期收到太多在读研究生的私信&#xff1a;“学长&#xff0c;我的论文查重率降到了8%&#xff0c;但教务处系统提示‘AIGC疑似率65%’&#xff0c;被打回重头再来&#xff0c;怎么办&#xff1f;” 在2026年的今天&#xff0c;知网…...

TFLI2C库详解:Benewake TFLuna激光测距传感器的I²C驱动开发指南

1. TFLI2C 库概述&#xff1a;面向 Benewake TFLuna 的专用 IC 驱动框架TFLI2C 是一个专为 Benewake TFLuna 激光测距传感器设计的 Arduino 兼容库&#xff0c;其核心目标是通过标准 IC&#xff08;Inter-Integrated Circuit&#xff09;总线实现对设备的高可靠性、低开销控制与…...

8086 汇编报错全总结与归纳

一、可能遇到的所有错误汇总错误代码错误含义触发行&#xff08;你的代码&#xff09;核心根源A2048Must be index or base registermov [ax],1H、add [dx],[ax]8086 硬件不支持用非BX通用寄存器做内存间接寻址A2035Operand must have sizemov [bx],1H汇编器无法判断操作数是 8…...

Speechless:为你的微博记忆穿上PDF保护衣

Speechless&#xff1a;为你的微博记忆穿上PDF保护衣 【免费下载链接】Speechless 把新浪微博的内容&#xff0c;导出成 PDF 文件进行备份的 Chrome Extension。 项目地址: https://gitcode.com/gh_mirrors/sp/Speechless 在数字记忆碎片化的时代&#xff0c;你是否曾担…...