MyExcel 3.7.0がリリースされ、マルチスレッド処理の詳細をシールド

MyExcelは、インポート、エクスポート、暗号化されたExcelなどの複数の機能を統合するJavaツールキットです。

MyExcelは、宣言型構文を使用してExcelを作成および読み取り、POIの特定の操作の詳細(POIを認識しない)をシールドし、それを一般的に使用されるテクノロジーの開発に置き換えます。 、および構築と読み取りのパフォーマンスは非常に優れており、メモリ消費量は非常に少ないです(詳細については、MyExcelとAli EasyExcelのパフォーマンス比較を参照してください)。

インポートなど:

List<ArtCrowd> result = SaxExcelReader.of(ArtCrowd.class)
        .sheet(0) // 0代表第一个sheet,如果为0,可省略该操作,也可sheet("名称")读取
        .rowFilter(row -> row.getRowNum() > 0) // 如无需过滤,可省略该操作,0代表第一行
        .beanFilter(ArtCrowd::isDance) // bean过滤
        .read(path.toFile());

これは定期的な更新です。具体的な更新は次のとおりです。

  • DefaultStreamExcelBuilderはasyncAppendメソッドを追加して、マルチスレッドの使用の詳細をシールドします。
  • FreemarkerTemplateHandlerを最適化し、Java8時間クラスのサポートを追加します。
  • 異常なフィールドの読み取り情報を最適化します。

マルチスレッドの詳細(asyncAppend内部実装はまだマルチスレッドです)の使用をシールドすることは、非同期エクスポートのしきい値を低くすることです。これにより、Java初心者またはマルチスレッドに慣れていないユーザーがMyExcelストリーミングエクスポートをすばやく開始し、ユーザーコードの各行を削減することができます。

元のストリーミングエクスポート方法:

try (DefaultStreamExcelBuilder<ArtCrowd> streamExcelBuilder = DefaultStreamExcelBuilder
                .of(ArtCrowd.class)
                .threadPool(Executors.newFixedThreadPool(10))
                .start()) {
    // 多线程异步获取数据并追加至excel,join等待线程执行完成
    List<CompletableFuture> futures = new ArrayList<>();
    for (int i = 0; i < 100; i++) {
        CompletableFuture future = CompletableFuture.runAsync(() -> {
            List<ArtCrowd> dataList = this.getDataList();
            // 数据追加
            streamExcelBuilder.append(dataList);
        });
        futures.add(future);
    }
    futures.forEach(CompletableFuture::join);
    // 最终构建
    Workbook workbook = defaultExcelBuilder.build();
    AttachmentExportUtil.export(workbook, "艺术生信息", response);
}

最適化されたストリーミングエクスポート方法:

try (DefaultStreamExcelBuilder<ArtCrowd> streamExcelBuilder = DefaultStreamExcelBuilder
                .of(ArtCrowd.class)
                .threadPool(Executors.newFixedThreadPool(10))
                .start()) {
    for (int i = 0; i < 100; i++) {
        // 数据追加
        streamExcelBuilder.asyncAppend(this::getDataList);
    }
    // 最终构建
    Workbook workbook = defaultExcelBuilder.build();
    AttachmentExportUtil.export(workbook, "艺术生信息", response);
}

詳細については、ドキュメントに移動してください:https : //github.com/liaochong/myexcel/wiki/Excel%E6%B5%81%E5%BC%8F%E5%AF%BC%E5%87%BA

おすすめ

転載: www.oschina.net/news/114840/myexcel-3-7-0-released
おすすめ