【springboot+easypoi】大数据量excel导出

上次写了一行代码解决导出导入,没看的小伙伴建议先看下《【springboot+easypoi】一行代码搞定excel导入导出》,但是实际业务中遇到一个问题,如果数据里比较大的时候,例如10w+数据一次导出,就会出现卡死情况,继续看官方文档,有大数据量导出方法,实现如下


 @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());
        }
    }

备注:导出11w+数据大概半分钟左右,sql以及导出数据处理都可以再优化,其他的就看各位小伙伴的需求了

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 标题 一级标题 二级标题 罗列 Red Red Red 图片[图片上传失败...(image-133ee3-151...
    wuyuhaoQaQ阅读 122评论 0 0
  • 是的,在刚才那个瞬间,我下定决心要考研了。 作为一名大三的死狗,我真的没有想明白考研的目的,在这个风口浪尖以及第一...
    拿着破轮子的少年阅读 1,141评论 18 16
  • 每当华灯初上,心底里会蓦地涌现欣喜的感觉,甜甜的,香香的,犹如妙龄少女手握玫瑰花悠然的走在一望无际的海边,心...
    Ma瑞敏阅读 436评论 0 3
  • 每个人都有不为人知的一面,同时,展现出来的又有很多面,所以人性是复杂的。 己所不欲勿施于人,人跟人交往,有反作用力...
    爱行走的帽子阅读 291评论 0 0
  • 一天之计在于晨,睁眼就到10点钟——来自那些人人都知道的道理 我是从初中就开始住宿生活的,在河北教育很落后的一个县...
    咔哧咔哧的分色阅读 1,546评论 14 50