EasyExcel数据导出实现、动态表头生成、SpringBoot3框架
1、引入EasyExcel依赖
2、定义ExcelModel表单模型
public class ExcelModel implements Serializable {
private String fileName;//定义导出文件名
private String[] headMap;//定义导出导出表头
private String[] fieldMap;//定义指导导出字段
private List<Map<String,Object>> datalist;//表单数据
}
3、定义ExcelUtils工具类
public static void dataWrite(@RequestBody ExcelModel excelModel,HttpServletResponse response){
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
try {
String fileName = URLEncoder.encode(excelModel.getFileName(),"UTF-8");
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
EasyExcel.write(response.getOutputStream()).head(setHead(excelModel.getHeadMap())).sheet(excelModel.getFileName()).doWrite(setData(excelModel.getDatalist(),excelModel.getFieldMap()));
// 这里需要设置不关闭流
} catch (Exception e) {
response.reset();
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
throw new SunException("下载失败",e);
}
}
/**
* 设置表格表头
* @param headMap Stirng[] 指定需要导出的表头
* @return
*/
public static List<List
List<List
for (String head : headMap ){
List
h.add(head);
list.add(h);
}
return list;
}
/**
* 设置表单数据
* @param datalist List<Map<String,Object>>格式、方便使用Map集合的数据处理
* @param fieldMap String[] 指定需要的导出字段的数组
* @return
*/
public static List<List

浙公网安备 33010602011771号