From 8e313bd0ebb9806afcf36ca154b81ce68baac4da Mon Sep 17 00:00:00 2001 From: musketyr Date: Tue, 24 Jun 2025 11:07:16 +0200 Subject: [PATCH] no rows cache for streaming spreadsheet --- .../dsl/spreadsheet/impl/AbstractSheetDefinition.java | 2 +- .../spreadsheet/builder/poi/PoiSheetDefinition.java | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/libs/spreadsheet-builder-api/src/main/java/builders/dsl/spreadsheet/impl/AbstractSheetDefinition.java b/libs/spreadsheet-builder-api/src/main/java/builders/dsl/spreadsheet/impl/AbstractSheetDefinition.java index fea8ac1e..8bd8d64a 100644 --- a/libs/spreadsheet-builder-api/src/main/java/builders/dsl/spreadsheet/impl/AbstractSheetDefinition.java +++ b/libs/spreadsheet-builder-api/src/main/java/builders/dsl/spreadsheet/impl/AbstractSheetDefinition.java @@ -44,7 +44,7 @@ protected AbstractWorkbookDefinition getWorkbook() { return workbook; } - private RowDefinition findOrCreateRow(int zeroBasedRowNumber) { + protected RowDefinition findOrCreateRow(int zeroBasedRowNumber) { AbstractRowDefinition row = rows.get(zeroBasedRowNumber + 1); if (row != null) { diff --git a/libs/spreadsheet-builder-poi/src/main/java/builders/dsl/spreadsheet/builder/poi/PoiSheetDefinition.java b/libs/spreadsheet-builder-poi/src/main/java/builders/dsl/spreadsheet/builder/poi/PoiSheetDefinition.java index 72dcfbbf..4c190567 100644 --- a/libs/spreadsheet-builder-poi/src/main/java/builders/dsl/spreadsheet/builder/poi/PoiSheetDefinition.java +++ b/libs/spreadsheet-builder-poi/src/main/java/builders/dsl/spreadsheet/builder/poi/PoiSheetDefinition.java @@ -18,6 +18,7 @@ package builders.dsl.spreadsheet.builder.poi; import builders.dsl.spreadsheet.builder.api.PageDefinition; +import builders.dsl.spreadsheet.builder.api.RowDefinition; import builders.dsl.spreadsheet.builder.api.SheetDefinition; import builders.dsl.spreadsheet.impl.AbstractSheetDefinition; import org.apache.poi.ss.usermodel.Row; @@ -34,10 +35,20 @@ class PoiSheetDefinition extends AbstractSheetDefinition implements SheetDefinit public static final int MAX_COLUMN_WIDTH = 255 * 256; private final Sheet sheet; + private final boolean streaming; PoiSheetDefinition(PoiWorkbookDefinition workbook, Sheet sheet) { super(workbook); this.sheet = sheet; + this.streaming = sheet instanceof SXSSFSheet; + } + + @Override + protected RowDefinition findOrCreateRow(int zeroBasedRowNumber) { + if (streaming) { + return createRow(zeroBasedRowNumber); + } + return super.findOrCreateRow(zeroBasedRowNumber); } @Override protected PoiRowDefinition createRow(int zeroBasedRowNumber) {