文章目录

    • 一、前言
    • 二.代码实现逻辑
    • 三.总结

一、前言

环境:SpringBoot 2.1.5.RELEASE

需求: 利用springboot+easypoi实现大数据量的导出excel

二.代码实现逻辑

@RequestMapping("export") public void export(HttpServletResponse response) { Map 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 params, Workbook workbook, ExportParams exportParams, Page page) { //分页查询数据 page.setCurrent(pageNum); page.setSize(1000); page.setCondition(params); page = this.getData(sysUserService.queryPage(page)); List 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总结】