alibaba/easyexcel

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

Open

#3.495 aberto em 12 de out. de 2023

Ver no GitHub
 (1 comment) (0 reactions) (0 assignees)Java (7.599 forks)batch import
help wanted

Métricas do repositório

Stars
 (33.728 stars)
Métricas de merge de PR
 (Nenhuma PRs mesclada em 30d)

Description

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();

Guia do colaborador