该方法为通过easyExel固定模板文件导出复杂表头及格式的excel处理方法
1、依赖
XML
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.1.2</version>
</dependency>
2、EasyExcelUtil工具类
java
/**
*
* @param response
* @param inputStream 导出模板的 is
* @param fileName 导出附件名称
* @param dateList 导出数据
*/
public static void exportByTemplate(HttpServletResponse response , InputStream inputStream, String fileName, List dateList){
// InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("template/aa.xlsx");//读取导出模板
try (ServletOutputStream outputStream = response.getOutputStream()){
response.setContentType("applicaiotn/vnd.openxmlformates-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("UTF-8");
String encodingFileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
response.setContentType("application/octet-stream;charset=UTF-8");
response.setHeader("Content-Disposition","attachment;filename="+encodingFileName+".xlsx");
ExcelWriter excelWriter = EasyExcel.write(outputStream).withTemplate(inputStream).build();
WriteSheet writeSheet = EasyExcel.writerSheet().build();
FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
if (dateList.size()>0){
excelWriter.fill(new FillWrapper("data",dateList),fillConfig,writeSheet);//data为模板中循环数据的占位符{data}
}
excelWriter.finish();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
3、模板
