当前位置: 首页 > 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;用于替…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...