EasyExcel整合springboot导出
EasyExcel整合springboot
1、pom依赖
<!-- easyExcel 相关依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.7</version>
</dependency>
Service示范
@Override
public void exportExcel(HttpServletResponse response, String caseId) {
List<CaseAnswer> list = tblCaseAnswerMapper.getExperimentCompletionRate(Long.parseLong(caseId));
try {
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
String fileName = URLEncoder.encode("报表-" + System.currentTimeMillis(), "UTF-8").replaceAll("\\+", "%20");
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
Set<String> set = new HashSet<>();
set.add("caseName");
set.add("clazzName");
set.add("pupilName");
set.add("genderName");
set.add("pupilNum");
set.add("experimentName");
set.add("rate");
EasyExcel.write(response.getOutputStream(), CaseAnswer.class)
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
.includeColumnFiledNames(set)
.sheet()
.doWrite(list);
response.getOutputStream().close();
response.getOutputStream().flush();
} catch (Exception e) {
logger.error(e.getMessage());
e.printStackTrace();
}
}
3、实体类
``
@ExcelProperty(value = "案例名称",order = 1)
@Transient
private String caseName;
@ExcelProperty(value = "学生姓名",order = 3)
@Transient
private String pupilName;
@ExcelProperty(value = "学生学号",order = 5)
@Transient
private String pupilNum;
@ExcelProperty(value = "实验名称",order = 6)
@Transient
private String experimentName;
@ExcelProperty(value = "班级名称",order = 2)
@Transient
private String clazzName;
/**
* 实验完成率
*/
@ExcelProperty(value = "实验完成率",order = 7)
@Transient
private String rate;
@ExcelProperty(value = "性别",order = 4)
@Transient
private String genderName;
5、controller
@GetMapping("/exportExcel")
public Result exportExcel(HttpServletResponse response, @RequestParam String caseId) {
teacherCaseAnswerService.exportExcel(response, caseId);
return ResultGenerator.genSuccessResult();
}