栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

    @ApiOperation("导出会员盘点情况")
    @PostMapping("exportMemberCheck")
    public ResponseData exportMemberCheck(@RequestBody QueryMemberCheckFB fb,
                                          HttpServletResponse response){
        try {
            validate(fb);

            Date nowTime = new Date();
            String notTimeStr = DateUtils.formatTo(nowTime, "yyyyMMddHHmm");

            QueryMemberCheckDTO dto = mapper.map(fb,QueryMemberCheckDTO.class);

            Workbook workbook = bigExcel(1,null,new ExportParams(EnumExportCode.MEMBER_CHECK.getDesc(), "sheet"),new Page<>(),dto);

            ExcelExportUtil.closeExportBigExcel();
            //执行导出
            downExcel(UcHelper.getUser().getName() + "-" + EnumExportCode.MEMBER_CHECK.getDesc()+"-"+notTimeStr+".xls", response, workbook);
        } catch (ServiceException | IOException se){
            log.error(String.format("导出会员盘点情况失败,失败原因:%s", se.getMessage()), se);
            return ResponseData.newFailed(String.format("导出会员盘点情况失败,失败原因:%s", se.getMessage()));
        }
        return ResponseData.newSuccess("导出成功");
    }

    private Workbook bigExcel(int pageNum, Workbook workbook, ExportParams exportParams, Page page,QueryMemberCheckDTO dto) {
        //分页查询数据
        dto.setPageNumber(pageNum);
        dto.setPageSize(5000);
        page = memberCheckService.pageMemberCheck(dto);
        List data = page.getRows();

        workbook = ExcelExportUtil.exportBigExcel(exportParams, MemberCheckVO.class, data);

        //如果不是最后一页,递归查询
        if (page.getTotalPages() > pageNum) {
            bigExcel(pageNum + 1, workbook, exportParams, page, dto);
        }
        return workbook;
    }

    
    public void downExcel(String fileName, HttpServletResponse response, Workbook workbook)
            throws IOException {
        response.setHeader("content-Type", "application/vnd.ms-excel");
        response.setCharacterEncoding("UTF-8");
        String encodeName = URLEncoder.encode(fileName, "UTF-8");
        encodeName = encodeName.replaceAll("\+", "%20");
        response.setHeader("Content-Disposition", "attachment;filename=" + encodeName);
        workbook.write(response.getOutputStream());
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/306198.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号