EasyExcel数据导出实现、动态表头生成、SpringBoot3框架

1、引入EasyExcel依赖


com.alibaba
easyexcel
3.3.2

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> setHead(String[] headMap){
List<List> list = new ArrayList<List>();
for (String head : headMap ){
List h = new ArrayList();
h.add(head);
list.add(h);
}
return list;
}

/**
* 设置表单数据
* @param datalist List<Map<String,Object>>格式、方便使用Map集合的数据处理
* @param fieldMap String[] 指定需要的导出字段的数组
* @return
*/
public static List<List

posted @ 2024-07-30 14:48  appdesign  阅读(745)  评论(0)    收藏  举报