【springboot+easypoi】大數(shù)據(jù)量excel導(dǎo)出

上次寫了一行代碼解決導(dǎo)出導(dǎo)入,沒看的小伙伴建議先看下《【springboot+easypoi】一行代碼搞定excel導(dǎo)入導(dǎo)出》,但是實際業(yè)務(wù)中遇到一個問題,如果數(shù)據(jù)里比較大的時候,例如10w+數(shù)據(jù)一次導(dǎo)出,就會出現(xiàn)卡死情況,繼續(xù)看官方文檔,有大數(shù)據(jù)量導(dǎo)出方法,實現(xiàn)如下


 @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) {
        //分頁查詢數(shù)據(jù)
        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());
        }
    }

備注:導(dǎo)出11w+數(shù)據(jù)大概半分鐘左右,sql以及導(dǎo)出數(shù)據(jù)處理都可以再優(yōu)化,其他的就看各位小伙伴的需求了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 標題 一級標題 二級標題 羅列 Red Red Red 圖片[圖片上傳失敗...(image-133ee3-151...
    wuyuhaoQaQ閱讀 132評論 0 0
  • 是的,在剛才那個瞬間,我下定決心要考研了。 作為一名大三的死狗,我真的沒有想明白考研的目的,在這個風(fēng)口浪尖以及第一...
    拿著破輪子的少年閱讀 1,186評論 18 16
  • 每當華燈初上,心底里會驀地涌現(xiàn)欣喜的感覺,甜甜的,香香的,猶如妙齡少女手握玫瑰花悠然的走在一望無際的海邊,心...
    Ma瑞敏閱讀 456評論 0 3
  • 每個人都有不為人知的一面,同時,展現(xiàn)出來的又有很多面,所以人性是復(fù)雜的。 己所不欲勿施于人,人跟人交往,有反作用力...
    愛行走的帽子閱讀 304評論 0 0
  • 一天之計在于晨,睜眼就到10點鐘——來自那些人人都知道的道理 我是從初中就開始住宿生活的,在河北教育很落后的一個縣...
    咔哧咔哧的分色閱讀 1,638評論 14 50

友情鏈接更多精彩內(nèi)容