第一步:添加easyPOI 依赖
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-spring-boot-starter</artifactId>
<version>4.4.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>4.4.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>4.4.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>4.4.0</version>
</dependency>
第二步:创建要导出的模版文件
第三步:java代码编写
controller层代码,请求参数为导出的数据List
@PostMapping("export_file")
public void import_file(@RequestBody List<EDNASurveyRecordBiodiversityVO> list, HttpServletResponse response) {
EDNASurveyRecordBiodiversityVO build = EDNASurveyRecordBiodiversityVO.builder().biodiversityName("1").biodiversityText("1").family("1").phylum("1").build();
list.add(build);
ExcelUtil.exportTemplate(list, response, "测试列表", "templates/test.xlsx");
}
业务层代码
public static void exportTemplate(List list, HttpServletResponse response, String title, String templatePath) {
try {
//导出模板
TemplateExportParams params = new TemplateExportParams(templatePath);
if (CollectionUtils.isEmpty(list)) {
throw new RuntimeException("导出数据不能为空!");
}
//组装数据
Map<String, Object> map = Maps.newHashMap();
map.put("list", list);
map.put("aaa", "123");
//导出
Workbook workbook = ExcelExportUtil.exportExcel(params, map);
response.setHeader("content-Type", "application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(title + ".xlsx", "UTF-8"));
response.setHeader("Access-Control-Expose-Headers", "content-disposition");
workbook.write(response.getOutputStream());
} catch (Exception e) {
log.error("导出数据异常:",e);
throw new RuntimeException("生成Excel附件异常",e);
}
}
第四步:测试导出结果
postMan或者apifox测试接口
最后打开结果成功