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

开发日记-EaxyExcel修改模板sheet名称

引入pom:

<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel-core</artifactId><version>3.1.1</version><scope>compile</scope></dependency>

编写自定义拦截器:


import com.alibaba.excel.write.handler.SheetWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;/*** 自定义模板导出sheet拦截器*/
public class CustomTemplateSheetStrategy implements SheetWriteHandler {private Integer sheetNo;private String sheetName;public CustomTemplateSheetStrategy(String sheetName) {this.sheetName = sheetName;}public CustomTemplateSheetStrategy(Integer sheetNo, String sheetName) {this.sheetNo = sheetNo;this.sheetName = sheetName;}@Overridepublic void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {}/*** 功能:动态修改模板中sheet的名称* sheet创建完成后调用* @param writeWorkbookHolder* @param writeSheetHolder*/@Overridepublic void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {if (sheetName == null) {return;}if (sheetNo == null) {sheetNo = 0;}writeWorkbookHolder.getCachedWorkbook().setSheetName(sheetNo, sheetName);}
}

生成excel代码:

// ...省略外层接口逻辑
try (//文件模板输入流InputStream inputStream = new ClassPathResource("//使用系统路径+文件名").getInputStream();ExcelWriter excelWriter = EasyExcelFactory.write(getOutputStream(fileName, response)).withTemplate(inputStream).registerWriteHandler(new CustomTemplateSheetStrategy(0//sheet序号,从0开始 , "// 自定义sheet名称")).autoCloseStream(Boolean.TRUE).build()) {WriteSheet sheet0 = EasyExcelFactory.writerSheet(0, "基本信息表").build();
//填充配置:forceNewRow为true列表自动换行FillConfig fillConfig = FillConfig.builder().forceNewRow(true).build();// 填充excelWriter.fill(// 数据, sheet0);
// 填充完成excelWriter.finish();} catch (IOException e) {e.printStackTrace();}
// 省略后续逻辑

 

http://www.lryc.cn/news/429911.html

相关文章:

  • 微软AI人工智能认证有哪些?
  • 基于缓存提高Java模板文件处理性能:减少磁盘I/O的实践与探索
  • C/C++ 线程局部存储(TLS)
  • 碰撞检测 | 基于ROS Rviz插件的多边形碰撞检测仿真平台
  • nginx实验
  • 新技术能够区分真实照片和 AI 伪造图片,但为何平台没有使用?|TodayAI
  • 测量 Redis 服务器的固有延迟
  • 【JVM】JVM内存模型与操作系统内存模型(一)
  • 构建基于LLM的应用程序——为您的应用程序选择合适的LLM
  • raksmart站群服务器多IP配置要求
  • 【Web IDE】WebContainer容器在浏览器中启动运行nodejs并使用vite启动项目
  • Linux 多线程
  • C语言编写三子棋游戏:从概念到思路到实现
  • React.js如何使用Bootstrap
  • 深入解析:Redis与Nacos分布式锁在业务中的具体应用
  • MySQL索引的性能优化
  • 协方差详解及在日常生活中的应用实例——天气温度与冰淇淋销量的关系
  • Spring Boot3.3.X整合Mybatis-Plus
  • 快速了解软件测试——测试用例的方法
  • 多线程、多进程,还是异步?-- Python 并发 API 如何选择
  • 汽车服务管理系统 _od8kr
  • 带你玩转小程序推广,实现短链接一键跳转
  • OpenDDS的Rtps_Udp传输协议可靠性QoS收发基本流程
  • 体育数据API纳米奥运会数据API:高阶数据包接口文档API示例⑦
  • 【中项第三版】系统集成项目管理工程师 | 第 15 章 组织保障
  • 数据结构——顺序栈和链式栈
  • PHP轻创推客集淘客地推任务平台于一体的综合营销平台系统源码
  • three.js实现 加载3dtiles ,瓦片 ,倾斜摄影,功能
  • Qt QTextEdit调用append数据重复的问题
  • 数学基础(二)