当前位置:   article > 正文

使用EasyExcel按照模版导出excel文件_easyexcel根据模板导出excel

easyexcel根据模板导出excel

使用bootstrap的tableExport仅可导出简单格式的excel文件,导出复杂格式的excel需要使用easyexcel根据模版生成。

需要在pom中导入easyexcel2.1.6和poi3.17依赖。

设置模版:

单行填充使用{name },多行填充使用{.name}

实体类加注解:

  1. public class Student {
  2. @ExcelIgnore
  3. private Integer id;
  4. @ColumnWidth(20)
  5.   @ExcelProperty("姓名")
  6. private String name;
  7. @ColumnWidth(15)
  8.   @ExcelProperty("年龄")
  9. private String age;
  10. }
@ColumnWidth():设置表头列宽
@ExcelProperty(index,value):index对应表头在第几列,从0开始。value对应表头名称。如果不设置表头默认使用字段名为表头,列顺序按照实体类字段顺序显示。
@ExcelIgnore:忽略扫描此字段,不在excel中填充。

Controller层代码:

  1. @RequestMapping(value = "/exportList")
  2. @ResponseBody
  3. public void exportList(HttpServletResponse response, HttpServletRequest request) throws Exception {
  4. String fileName = "报表";
  5. //获取模版路径
  6. String templateFilePath= "D:\\模版.xls";
  7. //设置响应头内容,以vnd.ms-excel方式打开数据
  8. response.setContentType("application/vnd.ms-excel");
  9. //修改响应头信息
  10. response.setHeader("Content-disposition", String.format("attachment; filename=\"%s\"", fileName + "1.xls"));
  11. //告诉所有浏览器不要缓存
  12. response.setHeader("Cache-Control", "no-cache");
  13. response.setHeader("Pragma", "no-cache");
  14. //设置时间值属性的响应头信息,不要缓存
  15. response.setDateHeader("Expires", -1);
  16. //(设置输出的编码格式)指定输出到客户端的时候,这些文字使用UTF-8编码
  17. response.setCharacterEncoding("UTF-8");
  18. //使用模版创建工作簿
  19. ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(),Student.class).withTemplate(templateFilePath).excelType(ExcelTypeEnum.XLS).build();
  20. WriteSheet sheet = EasyExcel.writerSheet().build();
  21. //开启自动换行,自动换行表示每次写入一条list数据是都会重新生成一行空行,此选项默认是关闭的,需要提前设置为true
  22. FillConfig fillConfig =FillConfig.builder().forceNewRow(Boolean.TRUE).build();
  23. List<Student> infos=null;
  24. infos=waterInfoService.excelExport();
  25. HashMap<String, String> mapFillData = new HashMap<>();
  26. mapFillData.put("date", "2023-4-23");
  27. //单行数据填充
  28. excelWriter.fill(mapFillData,sheet);
  29. //多行数据填充
  30. excelWriter.write(infos,sheet);
  31. //关闭流
  32. excelWriter.finish();
  33. }
EasyExcel.write(response.getOutputStream(),实体类的class).withTemplate(模版路径).excelType(ExcelTypeEnum.XLS).build();

EasyExcel默认excel文件后缀xlsx,如果要使用xls文件,需要设置excelType(ExcelTypeEnum.XLS)。

使用write()方法会自动关闭流,使用fill()方法需要手动关闭流。

生成文件如图:

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/170292
推荐阅读
相关标签
  

闽ICP备14008679号