alibaba/easyexcel

导出excel,导出数据字段24个,数据有100000行,耗时27秒,能不能优化减少耗时

Open

#3,495 创建于 2023年10月12日

在 GitHub 查看
 (1 评论) (0 反应) (0 负责人)Java (7,599 fork)batch import
help wanted

仓库指标

Star
 (33,728 star)
PR 合并指标
 (30 天内没有已合并 PR)

描述

String fileName ="D:\test.xlsx"; ExcelWriter excelWriter = EasyExcel.write(fileName,TestVo.class).excelType(ExcelTypeEnum.XLSX) .inMemory(false) .autoCloseStream(false) .build(); List objects = new ArrayList(); for (int i = 0; i < 110000; i++) { TestVo testVo = new TestVo(); testVo.setSapCustomerCode(System.currentTimeMillis()+""+i); testVo.setOrderGoodsDtlId("名字"); objects.add(testVo); } List<List> testVoLists = Lists.partition(objects, 110000).stream().map(ArrayList::new).collect(Collectors.toList());

    ForkJoinPool forkJoinPool = new ForkJoinPool(100, TtlForkJoinPoolHelper.getDefaultDisableInheritableForkJoinWorkerThreadFactory(), null, false);
    forkJoinPool.submit(TtlRunnable.get(() -> testVoLists.parallelStream().forEach(m -> {
            WriteSheet writeSheet = EasyExcel.writerSheet(0, "名字").head(TestVo.class)
                    .registerWriteHandler(new CustomCellWriteHandler()).registerWriteHandler(EasyExcelUtil.getStyleStrategy())
                    .build();
            //写数据
            WriteTable writeTable = new WriteTable();
            excelWriter.write(m, writeSheet,writeTable);
    }))).join();
    excelWriter.finish();

贡献者指南