【EasyExcel】 easyExcel 3.2.1 生成多sheet的xlsx文件

news/2025/2/10 14:32:12/文章来源:https://www.cnblogs.com/sxdcgaq8080/p/18707809

 

pom依赖:

<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.2.1</version></dependency>

 

核心util写法:

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import lombok.extern.slf4j.Slf4j;import java.io.File;
import java.util.List;/*** xlsx工具类* @date 2025/02/05*/
@Slf4j
public class XlsxUtil {public static String createMultiSheetXlsx(String fileName, List<XlsxSheetVO> multiSheetList){String tempFilePath = "/" + fileName + ".xlsx";ExcelWriter excelWriter = EasyExcel.write(tempFilePath).build();for (XlsxSheetVO xlsxSheetVO : multiSheetList) {WriteSheet writeSheet = EasyExcel.writerSheet(xlsxSheetVO.getSheetName()).head(xlsxSheetVO.getClazz()).build();excelWriter.write(xlsxSheetVO.getContext(), writeSheet);}// 关闭writer,释放内存
        excelWriter.finish();log.info("create createMultiSheetXlsx  file success, file path: {}", tempFilePath);return tempFilePath;}public static void deleteFile(String filePath) {File file = new File(filePath);if (file.exists()) {if (file.isDirectory()) {// 如果是目录,递归删除目录下的所有文件和子目录
                deleteDirectory(file);} else {// 如果是文件,直接删除
                file.delete();}log.info("delete file success, file path: {}", filePath);} else {log.info("file not exist, file path: {}", filePath);}}private static void deleteDirectory(File directory) {File[] files = directory.listFiles();if (files != null) {for (File file : files) {if (file.isDirectory()) {deleteDirectory(file); // 递归删除子目录} else {file.delete(); // 删除文件
                }}}directory.delete(); // 删除空目录
    }
}

 

支持多个sheet的dto:

import lombok.Data;import java.util.List;/*** 支持多个sheet的xlsxSheetVO*/
@Data
public class XlsxSheetVO {private String sheetName;private List<?> context;private Class<?> clazz;}

 

入口大概这样:

List<StampInventoryReportVo> stampInventoryReportVos = new ArrayList<>();
List<StampInventorySimpleReportVo> simpleReportVos = new ArrayList<>();XlsxSheetVO sheet1 = new XlsxSheetVO();
sheet1.setSheetName("ALL");
sheet1.setContext(stampInventoryReportVos);
sheet1.setClazz(StampInventoryReportVo.class);XlsxSheetVO sheet2 = new XlsxSheetVO();
sheet2.setSheetName("差異數據");
sheet2.setContext(simpleReportVos);
sheet2.setClazz(StampInventorySimpleReportVo.class);List<XlsxSheetVO> multiSheetList = Lists.newArrayList();
multiSheetList.add(sheet1);
multiSheetList.add(sheet2);String tempXlsxPath = XlsxUtil.createMultiSheetXlsx(fileName, multiSheetList);

 

 

 

生成文件如下:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/881678.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CVE-2024-41592 of DrayTek vigor3910 复现

getcgi接口存在堆栈溢出CVE-2024-41592 of DrayTek vigor3910 复现 漏洞简介DrayTek Vigor3910 devices through 4.3.2.6 have a stack-based overflow when processing query string parameters because GetCGI mishandles extraneous ampersand characters and long key-valu…

一次挂载磁盘经验

确认情况 查看当前磁盘设备 lsblk发现md124,md125有四块硬盘,md126,md127有3块硬盘。 判断md124是四块硬盘做的raid,md125是md124的元数据 同理,md126是三块盘做的raid,md127是元数据 创建挂载点 mkdir /mnt/md124试图直接mount失败 mount /dev/md124 /mnt/md124直接执行挂…

spring项目启动后,直接停止

在启动一个新的项目后,项目启动了,但是直接停止了。 这是该项目的application目录 没有原始的application.yml文件。所以项目没有查找到对应的配置文件,启动直接停止了。 本地启动中可以在IDEA中配置选择程序实参指定读取哪个配置文件

【原创工具】文件批量重命名 FileRename2 By怜渠客

【原创工具】文件批量重命名 FileRename2 半年前写过一个重命名小工具,但是有不少问题和局限,这次进行一个比较大的改进:支持导出当前文件名列表到文本文件,修改后一键导入重命名 减小软件体积(本就是小工具,超过2MB是不行滴) 更换编程语言为FreePascal、编译器为FPC使用…

从大规模恶意攻击 DeepSeek 事件看 AI 创新隐忧:安全可观测体系建设刻不容缓

在近来发生的 DeepSeek 遭遇的安全事件中,我们可以看到当前人工智能行业在网络安全方面的脆弱性,同时也为业界敲响了警钟。唯有通过全行业的协同努力,加强整体、完善的网络安全可观测建设,才能为 AI 技术的创新和发展构建一个安全而稳固的环境。我们期盼并相信,在攻克这些…

基于对象存储OSS快速搭建网盘

基于对象存储OSS快速搭建网盘 通过以上几个课时的学习,小浩对阿里云云上存储产品类型和特性有了一定的了解。小浩需要使用云上资源搭建个人网盘。在搭建个人网盘前,小浩梳理了个人网盘的架构图:个人网盘软件部署在ECS实例上,使用ECS实例公网IP对外提供个人网盘服务。个人网…

开启对话式智能分析新纪元——Wyn商业智能 BI 携手Deepseek 驱动数据分析变革

2月18号,Wyn 商业智能 V8.0Update1 版本将重磅推出对话式智能分析,集成Deepseek R1大模型,通过AI技术的深度融合,致力于打造"会思考的BI系统",让数据价值触手可及,助力企业实现从数据洞察到决策执行的敏捷闭环。 一、BI + AI:业务革新:自然语言驱动,让数据分…

使用echarts写关系图graph

关系图是 ECharts 提供的图表类型之一,用于展示节点(实体)之间的关系。创建一个关系图涉及到定义节点(nodes)和边(links)的数据,以及配置图表的样式和行为。 echarts针对关系图提供了三种布局;layout: "none" | "circular" | "force"no…

替换word中英文““为中文双引号“”

查找内容为(")(*)("),替换内容为"\3"

振弦式渗压计:将压力转换为频率信号的高灵敏度装置 长期测量水工结构物和土体内部渗透水压力

振弦式渗压计:将压力转换为频率信号的高灵敏度装置 长期测量水工结构物和土体内部渗透水压力振弦式渗压计是一种用于感受压力并将其转换为与压力成一定关系的频率信号输出的装置。其典型结构包括压力感应膜、振弦、电磁激振与信号拾取装置、密封外壳和屏蔽电缆等组件。GEO OSx…

DeepSeek入门到精通

入门到精通推理模型 • 例如:DeepSeek-R1,GPT-o3在逻辑推理、数学推理和实时问题解决方面表现突出。 推理大模型: 推理大模型是指能够在传统的大语言模型基础上,强化推理、逻辑分析和决策能力的模型。它 们通常具备额外的技术,比如强化学习、神经符号推理、元学习等,来增…

SAP ECC 740 创建表的索引

step1:进入ABAP数据字典(se11); step2:输入表名并点击“显示”; step3:单击“索引” step4:单击“创建索引”; step5:之后进行索引的创建