当前位置: 首页 > 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.lryc.cn/news/591167.html

相关文章:

  • 在Anaconda Prompt中安装库【保姆教程】
  • 使用flock单进程启动,仍然有多个同名进程可以同时运行
  • 苹果的机器学习框架将支持英伟达的CUDA平台
  • web后端开发(javaweb第十天)
  • 【后端】Linux系统发布.NetCore项目
  • suricata新增Mysql告警规则处理
  • Zemax坐标断点
  • GitHub开源轻量级语音模型 Vui:重塑边缘智能语音交互的未来
  • 【git 如何查看本地分支与远程分支之间的差异】
  • Oracle11.2.0.4 RAC迁移升级Oracle19.3 RAC
  • 单片机(STM32-时钟系统)
  • AI 智能质检系统在汽车制造企业的应用​
  • select_shape_proto 用起来很省事
  • 错误 0x80370102排查
  • CCLink IE转ModbusTCP网关配置无纸记录器(中篇)
  • 大语言模型系列(1): 3分钟上手,在骁龙AI PC上部署DeepSeek!
  • uniapp云托管前端网页
  • CentOS在线安装docker教程
  • 人工智能概念之八:常见的参数调优方法(交叉验证网格搜索、随机优化、贝叶斯优化、Hyperband优化)
  • npm 和 npx 区别对比
  • Django `transaction.atomic()` 完整使用指南
  • Java行为型模式---命令模式
  • Visual Studio 的常用快捷键
  • 自定义 django 中间件
  • 巧用 Golang 函数特性实现单元测试中的数据库操作 Mock
  • Kafka 控制器(Controller)详解:架构、原理与实战
  • 我的开发日志:随机数小程序
  • Unity VR多人手术模拟恢复2:客户端移动同步问题分析与解决方案
  • Kafka 配置参数详解:ZooKeeper 模式与 KRaft 模式对比
  • mac OS上docker安装zookeeper