使用easy-excel导出复杂表头的excel

今天想写一个双层表头的excel导出,一开始使用的是poi来画发现太麻烦,
于是就想到了使用easy-excel的模板填充来实现,将导出写成了一个简单的工具类,
供参考


最终是要实现为这样的一个效果 , 红色为表头,绿色为表体,于是我先做出了一个模板 ,
如果不会写模板的可以去看官方文档, 十分简单 https://www.yuque.com/easyexcel/doc/fill

然后将表头数据封装成一个map,表体数据为一个list , 去调用工具类就实现了

以下为工具类代码,导入了easy-excel就可以使用

package com.org.inventory.util;import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.fill.FillConfig;
import org.springframework.core.io.ClassPathResource;import javax.servlet.http.HttpServletResponse;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
import java.util.Map;/*** Description: easy excel 工具类** @ProjectName: inventory_task* @ProduceName: IntelliJ IDEA* @author: li ji hong* @date: 2021/12/15 9:51*/
public class EasyExcelUtils {private static final String CONTENT_TYPE = "application/vnd.ms-excel";private static final String CHARACTER_ENCODING = "utf-8";private static final String HEADER_S1 = "Content-disposition";private static final String HEADER_S2 = "attachment; filename=";/*** 创建excel** 此方法为封装简单excel的导出 ,* 表头或者日期等信息写在map ,* list数据单独传可以实现简单导出** @param response 响应* @param fileName 文件名称* @param map      map* @param list     列表* @throws IOException ioexception*/public static void createExcel(HttpServletResponse response, String fileName, Map<String, Object> map, List<?> list) throws IOException {// 设置公共头信息OutputStream out = null;BufferedOutputStream bos = null;response.setContentType(CONTENT_TYPE);response.setCharacterEncoding(CHARACTER_ENCODING);response.setHeader(HEADER_S1, HEADER_S2 + fileName);out = response.getOutputStream();bos = new BufferedOutputStream(out);// 此处可以修改 为 classpath:/fileClassPathResource cpr = new ClassPathResource("file" + File.separator + fileName);ExcelWriter excelWriter = com.alibaba.excel.EasyExcel.write(bos).withTemplate(cpr.getInputStream()).excelType(ExcelTypeEnum.XLS).build();WriteSheet writeSheet = com.alibaba.excel.EasyExcel.writerSheet().build();FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();// 填充 list 数据excelWriter.fill(list, fillConfig, writeSheet);// 填充 map 数据excelWriter.fill(map, writeSheet);excelWriter.finish();bos.flush();bos.close();}
}

直接调用即可

补充一下依赖,因为有些人的项目可能会与poi产生冲突

<!--集成EasyExcel --><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version><exclusions><exclusion><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId></exclusion><exclusion><groupId>org.apache.poi</groupId><artifactId>poi</artifactId></exclusion><exclusion><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId></exclusion><exclusion><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId></exclusion></exclusions></dependency>

使用easy excel导出复杂表头的excel相关推荐

  1. java excel导出复杂表头_java excel复杂表头和复杂数据导出

    懒得写废话了... package com.ruoyi.common.utils.poi; import com.ruoyi.framework.config.RuoYiConfig; import ...

  2. excel导出多重表头utils_java excel复杂表头和复杂数据导出

    懒得写废话了... package com.ruoyi.common.utils.poi; import com.ruoyi.framework.config.RuoYiConfig; import ...

  3. POI动态导出多层表头的EXCEL文件

    POI动态导出多层表头的EXCEL文件 表格表头导出 单行表头 多行表头 以前接触过一个很古老的导出Excel,实现的逻辑是先声明一个导出的Excel模板,模板里报表的表头名称和顺序是固定的,这样执行 ...

  4. excel导出多重表头utils_Java中注解学习系列教程-4 使用自定义注解实现excel导出...

    本文是<Java中注解学习系列教程>第四篇文章也是小案例文章. 自定义注解小案例是:使用自定义注解实现excel导出. Excel导出分析: ​ 有表头.数据值.一般第一行是表头,从第二行 ...

  5. 导出多级表头的Excel表格

    导出样式 代码 前端Vue handleAcceptExport() {this.$modal.confirm('是否确认导出有数据列表?').then(() => {this.exportLo ...

  6. EXCEL导出动态表头

    一般在项目里需要导出数据时都是表头固定的,这样用EasyExcel导出时,只要先定义和POJO类,然后注释的方式定义好表头即可,如下: @Getter @Setter @EqualsAndHashCo ...

  7. 当前页面excel导出_系统地学习Excel第03课,Excel的工作界面

    上一篇:02-Excel的基础知识 本篇内容结构如下: 本篇在章节中的位置 3. 工作界面 从 Excel 2007 版开始,Excel 的工作界面风格就一直延续至今,其中设置了一些便捷的工具栏和按钮 ...

  8. 移动端excel导出_前端实现Excel导入和导出功能

    介绍 最近项目中让实现一个导入导出Excel的功能,查找了一些插件后发现js-xlsx这个插件,所以就尝试使用了一下,这里将使用方法和遇到的问题简单记录一下. SheetJS js-xlsx 是一款能 ...

  9. 使用poi进行excel导出复杂表头的设计

    首先页面请求进行导出服务层进行处理: @ResponseBody @RequestMapping(value="/exportCollegeDetailExcel.action") ...

最新文章

  1. 阿里云服务器Svn-Server无法连接,阿里云服务器SVNServer配置
  2. Cowboy 源码分析(十八)
  3. Java8中的外观(JavaFX8)
  4. 黑苹果sd卡认不出来_天生一对:新入苹果M1笔记本,DOCKCASE拓展坞弥补缺憾
  5. ASP.NET MVC 入门7、Hellper与数据的提交与绑定
  6. mysql 数据操作 多表查询 子查询 带比较运算符的子查询
  7. iOS上传图片和视频(base64和file)
  8. Bean和Spirng模块
  9. MAC可以在.zshrc中修改PATH
  10. 随便一个人就能干预大选?
  11. 将整个网站页面变成黑白色
  12. Calling LoadLibraryEx on ISAPI filter failed
  13. Python.PyAutoGUI.利用手机模拟器破解Yousee密码
  14. [AV1] AV1 帧内预测
  15. 开始→运行→输入的命令集锦(欢迎补充)
  16. 利用urdf及RobCoGen生成运动学及动力学代码
  17. 怎样用计算机截图,如何在电脑中截图
  18. table表格打印断页时自动分页的实现方法
  19. java大作业用jsp数据库java_JSP数据库大作业 - 不是太阳也要发光的个人页面 - OSCHINA - 中文开源技术交流社区...
  20. Learning Entity and Relation Embeddings for Knowledge Graph Completion (TransR)论文翻译

热门文章

  1. 大学生会用计算机的重要性,聊聊大学生电脑的一些事情
  2. 在线教育_Day05-项目讲师管理模块前端开发
  3. web前端全栈0基础到精通(祺)vue 03
  4. 七层负载均衡HAproxy生产环境LVS+Keepalived+HAproxy(三)
  5. 最火爆ChatGPT知识星球分享,开启与GPT的神奇之旅
  6. Meipai–Capture the wonders美好瞬间用美拍补捉
  7. ffmpeg中关于EAGAIN的理解及非阻塞IO
  8. 【分治算法】求n个元素序列中第2大的元素
  9. 12 | 领域建模:如何用事件风暴构建领域模型
  10. nginx + tomcat 动静分离