-
一、前言
-
二.代码实现逻辑
-
三.总结
一、前言
环境:SpringBoot 2.1.5.RELEASE
需求:利用springboot+easypoi实现大数据量的导出excel
二.代码实现逻辑
@RequestMapping("export")
public void export(HttpServletResponse response) {
Map<String, Object> params = new HashMap<>();
Workbook workbook = bigExcel(1, params, null, new ExportParams("海贼王", "海贼王"), new Page<>());
ExcelExportUtil.closeExportBigExcel();
downLoadExcel("海贼王.xls", response, workbook);
}
private Workbook bigExcel(int pageNum, Map<String, Object> params, Workbook workbook, ExportParams exportParams, Page<SysUser> page) {
//分页查询数据
page.setCurrent(pageNum);
page.setSize(1000);
page.setCondition(params);
page = this.getData(sysUserService.queryPage(page));
List<SysUser> users = FastJsonUtils.toList(FastJsonUtils.toJSONString(page.getRecords()), SysUser.class);
workbook = ExcelExportUtil.exportBigExcel(exportParams, SysUser.class, users);
//如果不是最后一页,递归查询
if (page.getPages() > pageNum) {
bigExcel(pageNum + 1, params, workbook, exportParams, page);
}
return workbook;
}
private void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) {
try {
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
response.setHeader("content-Type", "application/vnd.ms-excel");
workbook.write(response.getOutputStream());
} catch (IOException e) {
throw new NormalException(e.getMessage());
}
}
三.总结
上面的使用是参考的网上的实现逻辑,但是其实实际使用当中的导出其实是可以进行抽象封装的,如果有需求请关注公众号参考我的下一篇【SpringBoot中大数据导出excel总结】
原文始发于微信公众号(Java时间屋):51-【springboot+easypoi】实现大数据量excel导出
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持一下吧
相关推荐
暂无评论内容