|
26 | 26 | package org.apache.fesod.sheet.core; |
27 | 27 |
|
28 | 28 | import java.io.File; |
| 29 | +import java.util.ArrayList; |
| 30 | +import java.util.Arrays; |
29 | 31 | import java.util.List; |
30 | 32 | import java.util.Map; |
| 33 | +import java.util.stream.Collectors; |
| 34 | +import org.apache.fesod.sheet.ExcelWriter; |
31 | 35 | import org.apache.fesod.sheet.FesodSheet; |
32 | 36 | import org.apache.fesod.sheet.read.listener.PageReadListener; |
33 | 37 | import org.apache.fesod.sheet.testkit.Tags; |
@@ -114,4 +118,33 @@ void pageReadListener07() throws Exception { |
114 | 118 | .sheet() |
115 | 119 | .doRead(); |
116 | 120 | } |
| 121 | + |
| 122 | + @Test |
| 123 | + void pageReadListenerMultipleSheets07() throws Exception { |
| 124 | + File file = createTempFile(ExcelFormat.XLSX); |
| 125 | + try (ExcelWriter excelWriter = FesodSheet.write(file, SimpleData.class).build()) { |
| 126 | + excelWriter.write( |
| 127 | + TestDataBuilder.simpleData(3, "First"), |
| 128 | + FesodSheet.writerSheet(0, "sheet0").build()); |
| 129 | + excelWriter.write( |
| 130 | + TestDataBuilder.simpleData(4, "Second"), |
| 131 | + FesodSheet.writerSheet(1, "sheet1").build()); |
| 132 | + } |
| 133 | + |
| 134 | + List<SimpleData> allData = new ArrayList<>(); |
| 135 | + FesodSheet.read(file, SimpleData.class, new PageReadListener<SimpleData>(allData::addAll, 5)) |
| 136 | + .doReadAll(); |
| 137 | + |
| 138 | + // Each row must be delivered exactly once, even when a sheet ends with a partially filled batch |
| 139 | + Assertions.assertEquals( |
| 140 | + Arrays.asList( |
| 141 | + "FirstName0", |
| 142 | + "FirstName1", |
| 143 | + "FirstName2", |
| 144 | + "SecondName0", |
| 145 | + "SecondName1", |
| 146 | + "SecondName2", |
| 147 | + "SecondName3"), |
| 148 | + allData.stream().map(SimpleData::getName).collect(Collectors.toList())); |
| 149 | + } |
117 | 150 | } |
0 commit comments