网上很多导出参考都写的很杂乱甚至有些很简单的导出写的尤为复杂,本人上班摸鱼时间写了一个极简的供新手参考 拷贝即可用,将查询方法,和实体类换成自己需要的就可以;
引入依赖 使用的easypoi 复杂功能可参考官方文档http://doc.wupaas.com/docs/easypoi/easypoi-1c0u4mo8p4ro8
<!-- easypoi功能 -->
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
</dependency>
代码:
/**
* 导出
* @param param
* @return
*/
@ApiOperation(value = "导出", notes = "导出")
@PostMapping(value = "/export")
public void export(@RequestBody Emp param, HttpServletResponse response) {
try {
// 设置页大小
int pageSize = 1000;
param.setSize(pageSize);
// 查询总条数
Long totalNums = empService.count(param);
Long pageNo = 0L;
// 总页数
if (totalNums % pageSize == 0 ) {
pageNo = totalNums / pageSize;
} else {
pageNo = (totalNums / pageSize) + 1;
}
// 设置一个空页签
Workbook workbook = null;
// 设置页签名称 (null 可以改为标题名 导出的表格第一行会显示你设置的字符串)
ExportParams params = new ExportParams(null, "药品信息");
// 循环页码
for (int i = 1; i <= pageNo; i++) {
param.setCurrent(i);
// 根据分页获取信息
List<Emp> empPage = empService.selectPage(param);
// 三个参数 ExportParams (参考官方文档配置项),对应实体类(应该可以使用Map.class,不过笔者没有实验), 实体类集合
workbook = ExcelExportUtil.exportBigExcel(params, Emp.class, empPage);
}
ExcelExportUtil.closeExportBigExcel();
response.setCharacterEncoding("UTF-8");
response.setHeader("content-Type", "application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("导出", "UTF-8"));
workbook.write(response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
整理逻辑就是查询所有数据,然后把查询的数据放到ExcelExportUtil.exportBigExcel(params, Emp.class, empPage);当中;
对应实体类上添加注解Excel(name就是列名称) 拓展功能参考 官方文档
@Excel(name = "主键", width = 25)
protected String id;
稍后会再写一个极简的导入。