美文网首页
九. EasyExcel导出大数据防止内存溢出

九. EasyExcel导出大数据防止内存溢出

作者: 任未然 | 来源:发表于2020-11-05 14:03 被阅读0次

一. 概述

在处理导出大数据时, 如果全部查出来再导出, 这样容易导致内存溢出, 为防止内存溢出, 可以分批查询进行导出

二. 示例

场景: 现在到导出30000条数据, 计划每次查询10000进行处理, 导出3个sheet, 每个sheet10000条数据

public class Test{
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class TestVO {
        @ExcelProperty(value = "*姓名", index = 0)
        private String name;
        @ExcelProperty(value = "*年龄", index = 1)
        private int age;
        @ExcelProperty(value = "学校", index = 2)
        private String school;
    }
    /**
     * 测试分批查询导出
     */
    @Test
    public void testBatchExport() throws Exception {
        FileOutputStream outputStream = new FileOutputStream("D:/1.xlsx");
        ExcelWriter excelWriter = EasyExcel.write(outputStream).build();
        /**
         * 分批查询进行导出
         * 示例: 现在要导出30000条数据, 模拟每次查询出10000条数据进行导出(防止全部查出内存溢出), 循环3次
         */
        WriteSheet writeSheet = EasyExcel.writerSheet(0).head(TestVO.class).build();
        for(int i = 0 ; i < 3 ; i++){
            // 每次查询10000条数据
            List<TestVO> testVOS = new ArrayList<>();
            for(int j = 0; j < 10000;j++){
                TestVO testVO = new TestVO("名字"+j,j,"学校"+j);
                testVOS.add(testVO);
            }
            excelWriter.write(testVOS,writeSheet);
        }
        excelWriter.finish();
    }

相关文章

网友评论

      本文标题:九. EasyExcel导出大数据防止内存溢出

      本文链接:https://www.haomeiwen.com/subject/wugovktx.html