使用easyExcel 的版本为2.2.6,在1个excel里面导出多个list
模板
导出后excel
@ApiOperation("test")
@GetMapping("test")
public void test(HttpServletResponse response) {
try{
//准备第一个list
List<UserAddVo> list1 = new ArrayList<>();
for (int i = 0; i < 10; i++) {
UserAddVo userAddVo = new UserAddVo();
userAddVo.setAccount( i + "账号");
userAddVo.setMobile("1315267999" + i);
list1.add(userAddVo);
}
//准备第二个list数据
List<UserAddVo> list2 = new ArrayList<>();
for (int i = 0; i < 10; i++) {
UserAddVo userAddVo = new UserAddVo();
userAddVo.setPositionName( i + "职位");
userAddVo.setMobile("1315267999" + i);
list2.add(userAddVo);
}
//读取模板输入流
InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream("static/template/1.xlsx");
//设置文件名称
String fileName = URLEncoder.encode("" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()), "UTF-8");
//设置文件类型
response.setContentType("application/vnd.ms-excel");
//设置编码格式
response.setCharacterEncoding("utf-8");
// https://www.jb51.net/article/30565.htm Content-Disposition 使用说明
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
//创建excel
ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(resourceAsStream).build();
// 创建sheet
WriteSheet writeSheet = EasyExcel.writerSheet().build();
FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
// 如果有多个list 模板上必须有{前缀.} 这里的前缀就是 a,然后多个list必须用 FillWrapper包裹
excelWriter.fill(new FillWrapper("a", list1), fillConfig, writeSheet);
excelWriter.fill(new FillWrapper("b", list2), fillConfig, writeSheet);
Map map = new HashMap<>();
map.put("total",111);
excelWriter.fill(map, writeSheet);
// 别忘记关闭流
excelWriter.finish();
}catch (Exception e){
e.printStackTrace();
}
}