使用流式导出分为三步:

    • 数据追加
    1. streamExcelBuilder.append(dataList);
    • 完成构建
    1. try (DefaultStreamExcelBuilder streamExcelBuilder = DefaultStreamExcelBuilder
    2. .of(ArtCrowd.class)
    3. .threadPool(Executors.newFixedThreadPool(10))
    4. .start()) {
    5. // 多线程异步获取数据并追加至excel,join等待线程执行完成
    6. List<CompletableFuture> futures = new ArrayList<>();
    7. for (int i = 0; i < 100; i++) {
    8. CompletableFuture future = CompletableFuture.runAsync(() -> {
    9. // 数据追加
    10. defaultExcelBuilder.append(dataList);
    11. });
    12. futures.add(future);
    13. }
    14. futures.forEach(CompletableFuture::join);
    15. // 最终构建
    16. Workbook workbook = defaultExcelBuilder.build();
    17. AttachmentExportUtil.export(workbook, "艺术生信息", response);
    18. }

    1. try (DefaultStreamExcelBuilder defaultExcelBuilder = DefaultStreamExcelBuilder
    2. .threadPool(Executors.newFixedThreadPool(10))
    3. .capacity(10_000)
    4. .start()) {
    5. ......
    6. // 最终构建
    7. Path zip = defaultExcelBuilder.buildAsZip("test");
    8. AttachmentExportUtil.export(zip,"finalName.zip",response);
    9. }

    导出使用注解

    • @ExcelTable(includeAllField,excludeParent,workbookType,sheetName,rowAccessWindowSize,useFieldNameAsTitle,defaultValue)
    • @ExcludeColumn
    • @ExcelColumn(title,order,dateFormatPattern,groups,defaultValue)对应注解详情请见: