定义模板
- 注意区分{}、{.}; {}单元格填充,{.}列填充。
- 一行多个{}填充,要确保每个{}在单独的单元格内。
导出结果
样式
设置模板样式即可
后端代码
@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 文件中