1.相关地址
EasyPoi功能文档
2.maven
当前日期:2021-05-19 下述maven坐标可用
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>4.1.0</version>
</dependency>
3.主要代码
// #1.获取Workbook
//参数1 ExportParams:excel文档相关设置
//参数2 AuditDataDto.class list里面的对象class
//参数3 包含上面对象AuditDataDto.class的list数据
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("2019小小演说家学校推荐列表", "学校推荐阶段"),
AuditDataDto.class, list);
// #2.通过HttpServletResponse下载excel文件
/**
* 设置response参数
*
* @param response response
* @param fileName fileName
*/
private void setResponseHeader(HttpServletResponse response, String fileName) {
// 针对IE或者以IE为内核的浏览器:
try {
fileName = URLEncoder.encode(fileName, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
response.setContentType("application/octet-stream;charset=utf-8");
response.setContentType("application/x-download");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
// 客户端不缓存
response.addHeader("Pragma", "no-cache");
response.addHeader("Cache-Control", "no-cache");
}
// 2019小小演说家学校推荐列表
String fileName = searchVo.getActivityName() + title + dateStr;
setResponseHeader(response, fileName + ".xlsx");
try {
OutputStream outputStream = response.getOutputStream();
workbook.write(outputStream);
outputStream.flush();
outputStream.close();
workbook.close();
} catch (IOException e) {
throw new ServiceException(String.format("[%s]下载失败,错误:%s", fileName, e.getMessage()));
}
4.list对象中的注解说明
//name-表头/列名
//width 列宽
@Excel(name = "作品编号", width = 15)
private String productCode;
/**
* replace替换
* 说明:获取的数据值是81/82,导出excel后poi自动帮你转成对应的小学/初中
*/
@Excel(name = "组别", replace = {"小学_81", "初中_82"})
private String groupCode;
/**
* 上传时间 时间的注解方式
*/
@Excel(name = "上传时间", databaseFormat = "yyyyMMddHHmmss", format = "yyyy-MM-dd HH:mm:ss", isImportField = "true_st", width = 20)
private Date creationDate;
点我:注解Excel中key-value含义
5.完整方法
/**
* 根据搜索条件导出excel
*
* @param response response
* @param searchVo searchVo
*/
@Override
public void exportExcel(HttpServletResponse response, AuditSearchVo searchVo) {
// #1.处理参数
String auditStage = searchVo.getAuditStage();
if (StringUtils.isEmpty(auditStage)) {
throw new ServiceException(String.format("searchVo对象中auditStage=%s不能为空", auditStage));
}
String title;
switch (auditStage) {
case "1":
System.out.println(1);
title = "学校推荐列表";
break;
case "2":
System.out.println(2);
title = "初审列表";
break;
case "3":
System.out.println(3);
title = "复审列表";
break;
case "4":
System.out.println(4);
title = "终审列表";
break;
default:
throw new ServiceException("auditStage值不在1学校推荐2初审3复审4终审四个阶段范围中");
}
// #2。获取数据
List<AuditDataDto> list = search(searchVo);
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(searchVo.getActivityName() + title, title + "阶段"),
AuditDataDto.class, list);
// #3。准备导出
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String dateStr = dateFormat.format(date);
// 2019小小演说家学校推荐列表
String fileName = searchVo.getActivityName() + title + dateStr;
setResponseHeader(response, fileName + ".xlsx");
try {
OutputStream outputStream = response.getOutputStream();
workbook.write(outputStream);
outputStream.flush();
outputStream.close();
workbook.close();
} catch (IOException e) {
throw new ServiceException(String.format("[%s]下载失败,错误:%s", fileName, e.getMessage()));
}
}
/**
* 设置response参数
*
* @param response response
* @param fileName fileName
*/
private void setResponseHeader(HttpServletResponse response, String fileName) {
// 针对IE或者以IE为内核的浏览器:
try {
fileName = URLEncoder.encode(fileName, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
response.setContentType("application/octet-stream;charset=utf-8");
response.setContentType("application/x-download");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
// 客户端不缓存
response.addHeader("Pragma", "no-cache");
response.addHeader("Cache-Control", "no-cache");
}