alibaba/easyexcel

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

Open

#3495 aperta il 12 ott 2023

Vedi su GitHub
 (1 commento) (0 reazioni) (0 assegnatari)Java (7599 fork)batch import
help wanted

Metriche repository

Star
 (33.728 star)
Metriche merge PR
 (Nessuna PR mergiata in 30 g)

Descrizione

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

Guida contributor