需求说明:因为项目需求,请求头要做国际化,请求头随时更改,所以请求头为动态!

1.pom.xml文件

<!--easyexcel -->
<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId>
</dependency>

2.EasyExcelExportUtils

import com.alibaba.excel.EasyExcel;
import org.apache.commons.lang.StringUtils;import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.util.*;/*** 导出工具类:可以通过easyUtil方法进行导出* @author 李庆伟* @date 2022/5/30 18:28*/
public class EasyExcelExportUtils {/**** [response, fileName:文件名称, heads:excel表头, list:数据体]* @return {@link }* @throws* @author 李庆伟* @date 2022/5/31 15:10*/public static void easyUtil(HttpServletResponse response,String fileName,List<String> heads,List<Map<String, Object>> list) throws IOException {if (StringUtils.isEmpty(fileName)){ //文件名称也可以动态获取fileName = System.currentTimeMillis() + ".xlsx";} else {fileName = fileName + ".xlsx";}if(heads == null || heads.size() == 0){heads = makeHeads();}if(list == null || list.size() == 0){list = makeData();}OutputStream os= responseInfo(response, fileName); // 调用responseInfo方法List<List<String>> hs = new ArrayList<>();for (String s : heads) {hs.add(Arrays.asList(s));}List<List<Object>> list2 = new ArrayList<>();for (int i = 0; i < list.size(); i++) {List<Object> objects = new ArrayList<>();Collection<Object> values = list.get(i).values();for (Object value : values) {objects.add(value.toString());}list2.add(objects);}EasyExcel.write(os).head(hs).sheet("模板(sheet名字)").doWrite(list2);System.out.println("导出成功");}private static List<String> makeHeads() {List<String> heads = new ArrayList<>(); //表头信息heads.add("唯一标识");heads.add("名称");heads.add("类型");return heads;}private static List<Map<String, Object>> makeData() {List<Map<String, Object>> list = new ArrayList<>();//Map<String,Object> test1 = new LinkedHashMap<>(); //手动添加测试数据(可根据需要从数据库查询)test1.put("id", 1);test1.put("name", 2);test1.put("str", 3);list.add(test1);//Map<String,Object> test2 = new LinkedHashMap<>();test2.put("id", 11);test2.put("name", 22);test2.put("str", 33);list.add(test2);return list;}/*** 功能:公用方法,写回浏览器* [response, fileName]* @return {@link OutputStream}* @throws* @author 李庆伟* @date 2022/5/31 16:23*/public static OutputStream responseInfo(HttpServletResponse response, String fileName) throws IOException {// 这里注意有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postmanresponse.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");response.setCharacterEncoding("utf-8");response.setHeader("Content-disposition", "attachment; filename*=utf-8''" + fileName);OutputStream os=response.getOutputStream();return os;}/*** 如果要兼容swagger用这个,上面的注释掉* 功能:公用方法* 参数:fileName 文件名称, 如:123.xlsxpublic static OutputStream responseInfo(HttpServletResponse response, String fileName) throws IOException {response.setCharacterEncoding("utf-8");response.setContentType("APPLICATION/OCTET-STREAM");response.addHeader("Content-Disposition", "attachment;filename=" + fileName);OutputStream os=response.getOutputStream();return os;}*/}

3.EasyExcelController

    /*** 动态导出* [response]* @return {@link }* @throws* @author 李庆伟* @date 2022/5/31 14:43*/@GetMapping("toOut")public void testExcel1(HttpServletResponse response) throws IOException {EasyExcelExportUtils.easyUtil(response,"12345",null,null);}/*** 动态导出,兼容swagger,如果使用swagger放开注释,注释掉上面代码* [response]* @return {@link }* @throws* @author 李庆伟* @date 2022/5/31 14:43@GetMapping("toOut")
@ApiOperation(value = "导出全部", notes = "导出全部", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)    public void testExcel1(HttpServletResponse response) throws IOException {EasyExcelExportUtils.easyUtil(response,"12345",null,null);}
*/

记录一点。。。。。。。。。。。。。。。。

EasyExcel动态导出-动态头相关推荐

  1. EasyExcel动态导出多级表头

    EasyExcel动态导出多级表头 工具类 /*** 特殊表头导出方法* @param response* @param fileName* @param sheetName* @param list ...

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

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

  3. EXCEL导出动态表头

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

  4. 阿里的easyexcal包实现表格动态导出

    阿里的easyexcal包实现表格动态导出 1.介绍 在日常开发中,我们或多或少会遇到导入excal,导出excal等业务需求,那么了解这一技能就很有必要了. 市场中针对这个,我知道的有两个包,一个是 ...

  5. java 动态导出excel表单 无模板文件下载

    java 动态导出excel表单 无模板文件下载 public ResponseEntity<byte[]> exportStanding(@PathVariable Long signu ...

  6. java 动态导出excel表单 无模板本地生成

    java 动态导出excel表单 无模板本地生成 这里使用的是alibaba的公共类excelWriter,注意在pom文件中要引入easyExcel的依赖 public void exportExc ...

  7. ie如何导入html文件类型,Magicodes.IE: 导入导出通用库,支持Dto导入导出以及动态导出,支持Excel、Word、Pdf和Html。...

    Magicodes.IE 导入导出通用库,支持Dto导入导出以及动态导出,支持Excel.Word.Pdf和Html. 疯狂的徽章 GitHub Azure DevOps Build Status: ...

  8. easyexcel一个模板动态多个sheet填充

    根据模板中第一个Sheet的样式生成多个Sheet,每个sheet中的样式与模板第一个sheet中的样式一样 目前easyexcel不能根据模板动态生成sheet,模板固定的几个sheet就只能填充那 ...

  9. java导出excel压缩包_java动态导出excel压缩成zip下载的方法

    本文实例为大家分享了java动态导出excel压缩成zip下载的具体代码,供大家参考,具体内容如下 package pack.java.io.demo; import java.io.Buffered ...

最新文章

  1. 谷歌-百度世界杯大数据预测,哪家更准?
  2. Deadline来了,如何按时结题?
  3. 从SOURCE_BUFFER单元开始存放了20个字母A, 编程将这20个字母A的字符串传送到DEST_BUFFER开始的单元中.
  4. BZOJ2442: [Usaco2011 Open]修剪草坪 单调队列优化dp
  5. Java Web 应用概述
  6. I.MX6 make menuconfig OTG to slave only mode
  7. [回顾]事件对象——event
  8. 冯永昌:云计算与大数据时代的量化投资
  9. 用verilog实现一个 一位全加器
  10. 深度学习——反向传播(Backpropagation)
  11. 输出边长为n的正六边形(c语言)
  12. 手机升级系统如何找回丢失的文件
  13. 或取代当前非易失性内存技术 Crossbar正式进军中国存储市场
  14. 数字人民币红包体验如何?
  15. QT 开发板无法显示GIF图片,windows能正常显示问题
  16. python 爬手机号_python手机号前7位归属地爬虫代码实例
  17. 数字图像处理python实现-形态学处理
  18. 人工智障入门-没有灵魂的功夫茶
  19. 解决intelij idea中文输入法候选框不跟随光标问题
  20. HDU 1495 非常可乐(BFS||数论)

热门文章

  1. 安装 Win10+GTX1050ti+cuda8.0+cuDNN5.1+Tensorflow-gpu1.2
  2. 智慧社区管理系统06(业主列表和功能实现)
  3. 我对移动端架构的思考
  4. 大数据周会-本周学习内容总结05
  5. 漫谈程序员(十)大白菜装机版安装win7系统使用教程
  6. 餐饮行业的营销策略是什么?
  7. 回文素数(杭电OJ,不喜欢这个题)
  8. pad 锁定屏幕显示方向为竖屏正方向
  9. “禁止燃放烟花爆竹”社会治理创新活动
  10. usb触摸屏驱动移植