alibaba / easyexcel

快速、简洁、解决大文件内存溢出的java处理Excel工具
https://easyexcel.opensource.alibaba.com
Apache License 2.0
32.09k stars 7.5k forks source link

导出文件慢 #3847

Open znj929 opened 3 months ago

znj929 commented 3 months ago

使用 ExcelWriter 生产文件到服务端,然后通过地址前端下载文件,要等很久文件才能正常写入完成,才能正常下载。

大致代码 public R exportFullCountryPartNum() { ExcelWriter excelWriter = null; String fileName = Constants.FullCountryPartNum + System.currentTimeMillis() + ExcelTypeEnum.XLSX.getValue(); String filePath = Constants.PROJECTPROFILE + "/" + fileName; FileUtil.makeDir(filePath); try { FileCommonUtils.validaFile(filePath); excelWriter = EasyExcel.write(filePath, ExportCountryPartNumVO.class) .build(); WriteSheet writeSheet = EasyExcel.writerSheet("sheet1").build();

        for (int i = 0; i < partNumList.size(); i++) {
            excelWriter.write(pictureList, writeSheet);
        }
    } catch (Exception e) {
        return R.error("Export failed, please re export or contact the administrator!");
    } finally {
        excelWriter.close();
    }
    return R.data(fileName);
}
LSL1618 commented 3 months ago

可能数据量太大,试试改成异步导出,将生成文件和下载文件2个步骤拆分出来,生成文件时保存导出记录(可以包含导出条件、导出人、导出时间、文件格式、文件大小、文件路径等等),下载文件时通过查看导出记录下载目标文件。