This is an automated email from the ASF dual-hosted git repository.

bengbengbalabalabeng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fesod.git


The following commit(s) were added to refs/heads/main by this push:
     new 0acb6e0e fix: reset cached batch in PageReadListener between sheets to 
avoid duplicate rows (#961)
0acb6e0e is described below

commit 0acb6e0e7fb6ac91d6d9fff52f9d9b5471fcd72a
Author: Nikita Kuprins <[email protected]>
AuthorDate: Sun Jul 26 10:43:41 2026 +0300

    fix: reset cached batch in PageReadListener between sheets to avoid 
duplicate rows (#961)
    
    Co-authored-by: Bengbengbalabalabeng 
<[email protected]>
---
 .../sheet/read/listener/PageReadListener.java      |  1 +
 .../apache/fesod/sheet/core/SimpleDataTest.java    | 33 ++++++++++++++++++++++
 2 files changed, 34 insertions(+)

diff --git 
a/fesod-sheet/src/main/java/org/apache/fesod/sheet/read/listener/PageReadListener.java
 
b/fesod-sheet/src/main/java/org/apache/fesod/sheet/read/listener/PageReadListener.java
index b2f21eaa..23f78d2b 100644
--- 
a/fesod-sheet/src/main/java/org/apache/fesod/sheet/read/listener/PageReadListener.java
+++ 
b/fesod-sheet/src/main/java/org/apache/fesod/sheet/read/listener/PageReadListener.java
@@ -77,6 +77,7 @@ public class PageReadListener<T> implements ReadListener<T> {
     public void doAfterAllAnalysed(AnalysisContext context) {
         if (CollectionUtils.isNotEmpty(cachedDataList)) {
             consumer.accept(cachedDataList);
+            cachedDataList = 
ListUtils.newArrayListWithExpectedSize(batchCount);
         }
     }
 }
diff --git 
a/fesod-sheet/src/test/java/org/apache/fesod/sheet/core/SimpleDataTest.java 
b/fesod-sheet/src/test/java/org/apache/fesod/sheet/core/SimpleDataTest.java
index 062d817a..c2933ddf 100644
--- a/fesod-sheet/src/test/java/org/apache/fesod/sheet/core/SimpleDataTest.java
+++ b/fesod-sheet/src/test/java/org/apache/fesod/sheet/core/SimpleDataTest.java
@@ -26,8 +26,12 @@
 package org.apache.fesod.sheet.core;
 
 import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
+import org.apache.fesod.sheet.ExcelWriter;
 import org.apache.fesod.sheet.FesodSheet;
 import org.apache.fesod.sheet.read.listener.PageReadListener;
 import org.apache.fesod.sheet.testkit.Tags;
@@ -114,4 +118,33 @@ public class SimpleDataTest extends AbstractExcelTest {
                 .sheet()
                 .doRead();
     }
+
+    @Test
+    void pageReadListenerMultipleSheets07() throws Exception {
+        File file = createTempFile(ExcelFormat.XLSX);
+        try (ExcelWriter excelWriter = FesodSheet.write(file, 
SimpleData.class).build()) {
+            excelWriter.write(
+                    TestDataBuilder.simpleData(3, "First"),
+                    FesodSheet.writerSheet(0, "sheet0").build());
+            excelWriter.write(
+                    TestDataBuilder.simpleData(4, "Second"),
+                    FesodSheet.writerSheet(1, "sheet1").build());
+        }
+
+        List<SimpleData> allData = new ArrayList<>();
+        FesodSheet.read(file, SimpleData.class, new 
PageReadListener<SimpleData>(allData::addAll, 5))
+                .doReadAll();
+
+        // Each row must be delivered exactly once, even when a sheet ends 
with a partially filled batch
+        Assertions.assertEquals(
+                Arrays.asList(
+                        "FirstName0",
+                        "FirstName1",
+                        "FirstName2",
+                        "SecondName0",
+                        "SecondName1",
+                        "SecondName2",
+                        "SecondName3"),
+                
allData.stream().map(SimpleData::getName).collect(Collectors.toList()));
+    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to