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

Java使用FastExcel实现模板写入导出(多级表头)

依赖配置 (Maven pom.xml)

<dependencies><!-- FastExcel 核心库 --><dependency><groupId>cn.idev.excel</groupId><artifactId>fastexcel</artifactId><version>1.0.0</version></dependency><!-- Apache POI 依赖 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.3</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.3</version></dependency>
</dependencies>

模版文件路径以及表头

 

导出映射实体类 DishAppManagementOriginalVo

package com.fantaibao.module.vo.appDish;import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import cn.idev.excel.annotation.write.style.ColumnWidth;
import cn.idev.excel.annotation.write.style.HeadFontStyle;
import cn.idev.excel.annotation.write.style.HeadStyle;
import cn.idev.excel.enums.BooleanEnum;
import cn.idev.excel.enums.poi.FillPatternTypeEnum;
import com.fantaibao.module.po.DishAppManagementOriginal;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;import java.math.BigDecimal;
import java.util.Date;@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ExcelIgnoreUnannotated
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 22)
@HeadFontStyle(fontName = "Microsoft YaHei", fontHeightInPoints = 11, bold = BooleanEnum.TRUE)
public class DishAppManagementOriginalVo {/*** 标准菜品名称*/@ColumnWidth(30)@ExcelProperty({"关联标准菜品数据","标准菜品名称"})private String menuName;/*** 标准菜品名称*/@ColumnWidth(20)@ExcelProperty({"关联标准菜品数据","标准单位"})private String menuUnit;/*** 菜品名称*/@ColumnWidth(30)@ExcelProperty({"收银平台原始数据","菜品名称"})private String originalName;/*** 菜品编码*/@ColumnWidth(30)@ExcelProperty({"收银平台原始数据","菜品编码"})private String originalCode;/*** 菜品类型(1-单点  2-套餐)*/@ColumnWidth(20)@ExcelProperty({"收银平台原始数据","菜品类型"})private String dishTypeStr;/*** 菜品分类*/@ColumnWidth(20)@ExcelProperty({"收银平台原始数据","菜品分类"})private String originalType;/*** 菜品平均定价(元保留两位小数)*/@ColumnWidth(15)@ExcelProperty({"收银平台原始数据","定价"})private BigDecimal avgPrice;/*** 菜品单位(十个字符)*/@ColumnWidth(20)@ExcelProperty({"收银平台原始数据","单位"})private String unit;}

文件处理工具类CustomFileUtil

@Component
public class CustomFileUtil {public File getFile(String filePath) {try {String tmpPath = System.getProperty("java.io.tmpdir") + filePath.substring(1);File file = new File(tmpPath);InputStream inputStream = this.getClass().getResourceAsStream(filePath);if (null == inputStream) {throw new Exception("文件读取失败");}FileUtils.copyInputStreamToFile(inputStream, file);inputStream.close();return file;} catch (Exception e) {System.out.println(e.getMessage());return null;}}
}

 

业务层调用

 @Resourceprivate CustomFileUtil customFileUtil;@Overridepublic void export(Integer type, HttpServletResponse response) throws IOException {//设置导出文件格式response.setHeader("Content-Type", "application/vnd.ms-excel");//设置导出文件名称response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("收银平台原始菜品数据.xlsx", StandardCharsets.UTF_8));//获取模板静态资源try (ExcelWriter excelWriter = FastExcel.write(response.getOutputStream()).withTemplate(customFileUtil.getFile("/template/original-dish-data.xlsx")).build()) {//获取模板的sheet页WriteSheet sheet1 = EasyExcel.writerSheet(1, "原始菜品信息").build();//获取导出数据源列表List<DishAppManagementOriginalVo> dishAppManagementOriginalVos = pageList(new Page(1, 10000), DishAppManagementOriginalListDto.builder().status(type).build()).getRecords();//使用 EasyExcel 进行数据填充excelWriter.write(dishAppManagementOriginalVos, sheet1);excelWriter.finish();}}

http://www.dtcms.com/a/284019.html

相关文章:

  • 设计模式四:装饰模式(Decorator Pattern)
  • maven本地仓库清缓存py脚本
  • 设计模式笔记_结构型_装饰器模式
  • centos中新增硬盘挂载文件夹
  • Install Docker Engine on UbuntuMySQL
  • 【安卓按键精灵辅助工具】adb调试工具连接安卓模拟器异常处理
  • Vuex中store
  • 爬虫核心原理与入门技巧分析
  • JavaScript中的Window对象
  • Vue3入门-组件及组件化
  • Sentinel配置Nacos持久化
  • Python爬虫实战:研究cssutils库相关技术
  • AI问答-供应链管理:各种交通运输方式货运成本分析
  • 如何用文思助手改好一篇烂材料
  • maven(配置)
  • clonezilla 导出自动化恢复iso
  • 信息安全基础专业面试知识点(上:密码学与软件安全)
  • 解锁 iOS 按键精灵辅助工具自动化新可能:iOSElement.Click 让元素交互更简单
  • springmvc跨域解决方案
  • RAG实战指南 Day 18:Chroma、Milvus与Pinecone实战对比
  • 基于springboot+vue+mysql框架的工作流程管理系统的设计与实现(源码+论文+PPT答辩)
  • 23种设计模式--#2单例模式
  • 从AWS MySQL数据库下载备份到S3的完整解决方案
  • ros2 标定相机
  • 企业级网络综合集成实践:VLAN、Trunk、STP、路由协议(OSPF/RIP)、PPP、服务管理(TELNET/FTP)与安全(ACL)
  • CKS认证 | Day6 监控、审计和运行时安全 sysdig、falco、审计日志
  • Redis主从复制数据同步实现原理详细介绍
  • UML用例规范,use case diagram
  • 灵易智模中的重构导出可以做什么
  • Jmeter使用 -1