EasyExcel基于模板导出

定义模板

  1. 注意区分{}、{.}; {}单元格填充,{.}列填充。
  2. 一行多个{}填充,要确保每个{}在单独的单元格内。

EasyExcel基于模板导出_第1张图片

导出结果

EasyExcel基于模板导出_第2张图片

样式

设置模板样式即可

后端代码

@PostMapping("/exportExcel")
    public void export(HttpServletResponse response, @RequestBody Student student){
  //获取数据
  List<Student> studentList = studentDao.findByWhere(student);

  try{
      response.setCharacterEncoding("UTF-8");
      response.setContentType("application/octet-stream");
      response.setHeader("Content-Disposition","attachment;filename="+URLEncoder.encode("学生表.xls","utf-8"));

      //获取模板路径
      String fullFilePath = fileProperties.getDir() + File.separatorChar + "成绩单.xls";

      //日期填充
      Map<String,String> date = new HashMap<>();
      date.put("date","20230331")
      
      //输出excel
      EasyExcel
          .write(response.getOutputStream())
          .autoCloseStream(true)
          .withTemplate(fullFilePath)
          .build()
          .fill(date, EasyExcel.writerSheet(0).build())
          .fill(studentList, EasyExcel.writerSheet(0).build())
          .finish();
      }catch (IOException e){
          e.printStackTrace();
      }
    }
  • 补充:easyexcel链式写法优化
EasyExcel.write(response.getOutputStream())
    .withTemplate(templatePath)   // 指定模板文件路径
    .autoCloseStream(true)        // 输出完成后自动关闭流
    .sheet()
    .registerWriteHandler(new CustomWriteHandler(param1, param2))  // 可选,注册写处理器
    .head(titleList)              // 指定表头信息
    .tableStyle(tableStyle)       // 可选,设置表格样式
    .doFill(dataList);            // 将数据填充到 Excel 文件中

你可能感兴趣的:(EasyExcel,java)