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 c8224b88 feat: add support for column-based reading of XLS files (#981)
c8224b88 is described below
commit c8224b88de26a2daa54e70466556b9ef809bb7eb
Author: Selim S. <[email protected]>
AuthorDate: Wed Aug 12 12:51:57 2026 +0100
feat: add support for column-based reading of XLS files (#981)
* feature: number and sstlabel with column support
* remove null checks for sheet holder and sheet
* feat: adding filtering capability for columns for additional typeset:
formula, bool, rk, blank etc
* fix CI: missing import
* fix CI : add missing imports
* address reviewing comments : revert NOTE
* fix: code style and restore the missing test
---------
Co-authored-by: Selim Soufargi <[email protected]~>
Co-authored-by: Bengbengbalabalabeng <[email protected]>
---
.../analysis/v03/handlers/BlankRecordHandler.java | 15 ++++-
.../v03/handlers/BoolErrRecordHandler.java | 16 ++++-
.../analysis/v03/handlers/DummyRecordHandler.java | 14 +++-
.../v03/handlers/FormulaRecordHandler.java | 24 +++++--
.../analysis/v03/handlers/LabelRecordHandler.java | 16 ++++-
.../v03/handlers/LabelSstRecordHandler.java | 22 +++++--
.../analysis/v03/handlers/NumberRecordHandler.java | 18 +++++-
.../analysis/v03/handlers/RkRecordHandler.java | 15 ++++-
.../org/apache/fesod/sheet/FesodSheetTest.java | 75 ++++++++++++++++++++++
9 files changed, 197 insertions(+), 18 deletions(-)
diff --git
a/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/BlankRecordHandler.java
b/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/BlankRecordHandler.java
index 07aa6884..2cf1782e 100644
---
a/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/BlankRecordHandler.java
+++
b/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/BlankRecordHandler.java
@@ -25,6 +25,7 @@
package org.apache.fesod.sheet.analysis.v03.handlers;
+import java.util.List;
import org.apache.fesod.sheet.analysis.v03.IgnorableXlsRecordHandler;
import org.apache.fesod.sheet.context.xls.XlsReadContext;
import org.apache.fesod.sheet.metadata.data.ReadCellData;
@@ -39,9 +40,21 @@ public class BlankRecordHandler extends
AbstractXlsRecordHandler implements Igno
@Override
public void processRecord(XlsReadContext xlsReadContext, Record record) {
BlankRecord br = (BlankRecord) record;
+ int originalColumnIndex = br.getColumn();
+
+ List<Integer> includeColumnIndexes =
+
xlsReadContext.readSheetHolder().getReadSheet().getColumnIndexes();
+
+ int targetColumnIndex = originalColumnIndex;
+ if (includeColumnIndexes != null) {
+ targetColumnIndex =
includeColumnIndexes.indexOf(originalColumnIndex);
+ if (targetColumnIndex < 0) {
+ return;
+ }
+ }
xlsReadContext
.xlsReadSheetHolder()
.getCellMap()
- .put((int) br.getColumn(),
ReadCellData.newEmptyInstance(br.getRow(), (int) br.getColumn()));
+ .put(targetColumnIndex,
ReadCellData.newEmptyInstance(br.getRow(), targetColumnIndex));
}
}
diff --git
a/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/BoolErrRecordHandler.java
b/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/BoolErrRecordHandler.java
index eea2b15e..4fe379ca 100644
---
a/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/BoolErrRecordHandler.java
+++
b/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/BoolErrRecordHandler.java
@@ -25,6 +25,7 @@
package org.apache.fesod.sheet.analysis.v03.handlers;
+import java.util.List;
import org.apache.fesod.sheet.analysis.v03.IgnorableXlsRecordHandler;
import org.apache.fesod.sheet.context.xls.XlsReadContext;
import org.apache.fesod.sheet.enums.RowTypeEnum;
@@ -40,11 +41,22 @@ public class BoolErrRecordHandler extends
AbstractXlsRecordHandler implements Ig
@Override
public void processRecord(XlsReadContext xlsReadContext, Record record) {
BoolErrRecord ber = (BoolErrRecord) record;
+ int originalColumnIndex = ber.getColumn();
+ List<Integer> includeColumnIndexes =
+
xlsReadContext.readSheetHolder().getReadSheet().getColumnIndexes();
+
+ int targetColumnIndex = originalColumnIndex;
+ if (includeColumnIndexes != null) {
+ targetColumnIndex =
includeColumnIndexes.indexOf(originalColumnIndex);
+ if (targetColumnIndex < 0) {
+ return;
+ }
+ }
xlsReadContext
.xlsReadSheetHolder()
.getCellMap()
- .put((int) ber.getColumn(),
ReadCellData.newInstance(ber.getBooleanValue(), ber.getRow(), (int)
- ber.getColumn()));
+ .put(targetColumnIndex,
ReadCellData.newInstance(ber.getBooleanValue(), ber.getRow(), (int)
+ targetColumnIndex));
xlsReadContext.xlsReadSheetHolder().setTempRowType(RowTypeEnum.DATA);
}
}
diff --git
a/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/DummyRecordHandler.java
b/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/DummyRecordHandler.java
index 9035c551..18cc1c02 100644
---
a/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/DummyRecordHandler.java
+++
b/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/DummyRecordHandler.java
@@ -26,6 +26,7 @@
package org.apache.fesod.sheet.analysis.v03.handlers;
import java.util.LinkedHashMap;
+import java.util.List;
import org.apache.fesod.sheet.analysis.v03.IgnorableXlsRecordHandler;
import org.apache.fesod.sheet.context.xls.XlsReadContext;
import org.apache.fesod.sheet.enums.RowTypeEnum;
@@ -58,11 +59,22 @@ public class DummyRecordHandler extends
AbstractXlsRecordHandler implements Igno
xlsReadSheetHolder.setTempRowType(RowTypeEnum.EMPTY);
} else if (record instanceof MissingCellDummyRecord) {
MissingCellDummyRecord mcdr = (MissingCellDummyRecord) record;
+ int originalColumnIndex = mcdr.getColumn();
+ List<Integer> includeColumnIndexes =
+
xlsReadContext.readSheetHolder().getReadSheet().getColumnIndexes();
+
+ int targetColumnIndex = originalColumnIndex;
+ if (includeColumnIndexes != null) {
+ targetColumnIndex =
includeColumnIndexes.indexOf(originalColumnIndex);
+ if (targetColumnIndex < 0) {
+ return;
+ }
+ }
// Some abnormal XLS, in the case of data already exist, or there
will be a "MissingCellDummyRecord"
// records, so if the existing data, empty data is ignored
xlsReadSheetHolder
.getCellMap()
- .putIfAbsent(mcdr.getColumn(),
ReadCellData.newEmptyInstance(mcdr.getRow(), mcdr.getColumn()));
+ .putIfAbsent(targetColumnIndex,
ReadCellData.newEmptyInstance(mcdr.getRow(), targetColumnIndex));
}
}
}
diff --git
a/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/FormulaRecordHandler.java
b/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/FormulaRecordHandler.java
index b5a2218b..229a188a 100644
---
a/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/FormulaRecordHandler.java
+++
b/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/FormulaRecordHandler.java
@@ -26,6 +26,7 @@
package org.apache.fesod.sheet.analysis.v03.handlers;
import java.math.BigDecimal;
+import java.util.List;
import java.util.Map;
import lombok.extern.slf4j.Slf4j;
import org.apache.fesod.sheet.analysis.v03.IgnorableXlsRecordHandler;
@@ -53,10 +54,23 @@ public class FormulaRecordHandler extends
AbstractXlsRecordHandler implements Ig
@Override
public void processRecord(XlsReadContext xlsReadContext, Record record) {
FormulaRecord frec = (FormulaRecord) record;
+ int originalColumnIndex = frec.getColumn();
+
+ List<Integer> includeColumnIndexes =
+
xlsReadContext.readSheetHolder().getReadSheet().getColumnIndexes();
+
+ int targetColumnIndex = originalColumnIndex;
+ if (includeColumnIndexes != null) {
+ targetColumnIndex =
includeColumnIndexes.indexOf(originalColumnIndex);
+ if (targetColumnIndex < 0) {
+ return;
+ }
+ }
+
Map<Integer, Cell> cellMap =
xlsReadContext.xlsReadSheetHolder().getCellMap();
ReadCellData<?> tempCellData = new ReadCellData<>();
tempCellData.setRowIndex(frec.getRow());
- tempCellData.setColumnIndex((int) frec.getColumn());
+ tempCellData.setColumnIndex(targetColumnIndex);
CellType cellType = CellType.forInt(frec.getCachedResultType());
String formulaValue = null;
try {
@@ -98,21 +112,21 @@ public class FormulaRecordHandler extends
AbstractXlsRecordHandler implements Ig
.getGlobalConfiguration()
.getLocale()));
tempCellData.setDataFormatData(dataFormatData);
- cellMap.put((int) frec.getColumn(), tempCellData);
+ cellMap.put(targetColumnIndex, tempCellData);
break;
case ERROR:
tempCellData.setType(CellDataTypeEnum.ERROR);
tempCellData.setStringValue(ERROR);
- cellMap.put((int) frec.getColumn(), tempCellData);
+ cellMap.put(targetColumnIndex, tempCellData);
break;
case BOOLEAN:
tempCellData.setType(CellDataTypeEnum.BOOLEAN);
tempCellData.setBooleanValue(frec.getCachedBooleanValue());
- cellMap.put((int) frec.getColumn(), tempCellData);
+ cellMap.put(targetColumnIndex, tempCellData);
break;
default:
tempCellData.setType(CellDataTypeEnum.EMPTY);
- cellMap.put((int) frec.getColumn(), tempCellData);
+ cellMap.put(targetColumnIndex, tempCellData);
break;
}
}
diff --git
a/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/LabelRecordHandler.java
b/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/LabelRecordHandler.java
index 0196a10b..0df77a3b 100644
---
a/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/LabelRecordHandler.java
+++
b/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/LabelRecordHandler.java
@@ -25,6 +25,7 @@
package org.apache.fesod.sheet.analysis.v03.handlers;
+import java.util.List;
import org.apache.fesod.common.util.StringUtils;
import org.apache.fesod.sheet.analysis.v03.IgnorableXlsRecordHandler;
import org.apache.fesod.sheet.context.xls.XlsReadContext;
@@ -41,6 +42,19 @@ public class LabelRecordHandler extends
AbstractXlsRecordHandler implements Igno
@Override
public void processRecord(XlsReadContext xlsReadContext, Record record) {
LabelRecord lrec = (LabelRecord) record;
+ int originalColumnIndex = lrec.getColumn();
+
+ List<Integer> includeColumnIndexes =
+
xlsReadContext.readSheetHolder().getReadSheet().getColumnIndexes();
+
+ int targetColumnIndex = originalColumnIndex;
+ if (includeColumnIndexes != null) {
+ targetColumnIndex =
includeColumnIndexes.indexOf(originalColumnIndex);
+ if (targetColumnIndex < 0) {
+ return;
+ }
+ }
+
String data = lrec.getValue();
if (data != null) {
GlobalConfiguration globalConfiguration =
@@ -54,7 +68,7 @@ public class LabelRecordHandler extends
AbstractXlsRecordHandler implements Igno
xlsReadContext
.xlsReadSheetHolder()
.getCellMap()
- .put((int) lrec.getColumn(), ReadCellData.newInstance(data,
lrec.getRow(), (int) lrec.getColumn()));
+ .put(targetColumnIndex, ReadCellData.newInstance(data,
lrec.getRow(), targetColumnIndex));
xlsReadContext.xlsReadSheetHolder().setTempRowType(RowTypeEnum.DATA);
}
}
diff --git
a/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/LabelSstRecordHandler.java
b/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/LabelSstRecordHandler.java
index 91ec669a..c718b85c 100644
---
a/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/LabelSstRecordHandler.java
+++
b/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/LabelSstRecordHandler.java
@@ -25,6 +25,7 @@
package org.apache.fesod.sheet.analysis.v03.handlers;
+import java.util.List;
import java.util.Map;
import org.apache.fesod.common.util.StringUtils;
import org.apache.fesod.sheet.analysis.v03.IgnorableXlsRecordHandler;
@@ -45,17 +46,28 @@ public class LabelSstRecordHandler extends
AbstractXlsRecordHandler implements I
@Override
public void processRecord(XlsReadContext xlsReadContext, Record record) {
LabelSSTRecord lsrec = (LabelSSTRecord) record;
+ int originalColumnIndex = lsrec.getColumn();
+
+ List<Integer> includeColumnIndexes =
+
xlsReadContext.readSheetHolder().getReadSheet().getColumnIndexes();
+
+ int targetColumnIndex = originalColumnIndex;
+ if (includeColumnIndexes != null) {
+ targetColumnIndex =
includeColumnIndexes.indexOf(originalColumnIndex);
+ if (targetColumnIndex < 0) {
+ return;
+ }
+ }
+
ReadCache readCache =
xlsReadContext.readWorkbookHolder().getReadCache();
Map<Integer, Cell> cellMap =
xlsReadContext.xlsReadSheetHolder().getCellMap();
if (readCache == null) {
- cellMap.put(
- (int) lsrec.getColumn(),
ReadCellData.newEmptyInstance(lsrec.getRow(), (int) lsrec.getColumn()));
+ cellMap.put(targetColumnIndex,
ReadCellData.newEmptyInstance(lsrec.getRow(), targetColumnIndex));
return;
}
String data = readCache.get(lsrec.getSSTIndex());
if (data == null) {
- cellMap.put(
- (int) lsrec.getColumn(),
ReadCellData.newEmptyInstance(lsrec.getRow(), (int) lsrec.getColumn()));
+ cellMap.put(targetColumnIndex,
ReadCellData.newEmptyInstance(lsrec.getRow(), targetColumnIndex));
return;
}
@@ -66,7 +78,7 @@ public class LabelSstRecordHandler extends
AbstractXlsRecordHandler implements I
} else if (globalConfiguration.getAutoTrim()) {
data = data.trim();
}
- cellMap.put((int) lsrec.getColumn(), ReadCellData.newInstance(data,
lsrec.getRow(), (int) lsrec.getColumn()));
+ cellMap.put(targetColumnIndex, ReadCellData.newInstance(data,
lsrec.getRow(), targetColumnIndex));
xlsReadContext.xlsReadSheetHolder().setTempRowType(RowTypeEnum.DATA);
}
}
diff --git
a/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/NumberRecordHandler.java
b/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/NumberRecordHandler.java
index 23cda011..ec0ea97b 100644
---
a/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/NumberRecordHandler.java
+++
b/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/NumberRecordHandler.java
@@ -26,6 +26,7 @@
package org.apache.fesod.sheet.analysis.v03.handlers;
import java.math.BigDecimal;
+import java.util.List;
import org.apache.fesod.sheet.analysis.v03.IgnorableXlsRecordHandler;
import org.apache.fesod.sheet.constant.BuiltinFormats;
import org.apache.fesod.sheet.context.xls.XlsReadContext;
@@ -43,8 +44,21 @@ public class NumberRecordHandler extends
AbstractXlsRecordHandler implements Ign
@Override
public void processRecord(XlsReadContext xlsReadContext, Record record) {
NumberRecord nr = (NumberRecord) record;
+ int originalColumnIndex = nr.getColumn();
+
+ List<Integer> includeColumnIndexes =
+
xlsReadContext.readSheetHolder().getReadSheet().getColumnIndexes();
+
+ int targetColumnIndex = originalColumnIndex;
+ if (includeColumnIndexes != null) {
+ targetColumnIndex =
includeColumnIndexes.indexOf(originalColumnIndex);
+ if (targetColumnIndex < 0) {
+ return;
+ }
+ }
+
ReadCellData<?> cellData =
-
ReadCellData.newInstanceOriginal(BigDecimal.valueOf(nr.getValue()),
nr.getRow(), (int) nr.getColumn());
+
ReadCellData.newInstanceOriginal(BigDecimal.valueOf(nr.getValue()),
nr.getRow(), targetColumnIndex);
short dataFormat = (short) xlsReadContext
.xlsReadWorkbookHolder()
.getFormatTrackingHSSFListener()
@@ -59,7 +73,7 @@ public class NumberRecordHandler extends
AbstractXlsRecordHandler implements Ign
.getFormatString(nr),
xlsReadContext.readSheetHolder().getGlobalConfiguration().getLocale()));
cellData.setDataFormatData(dataFormatData);
- xlsReadContext.xlsReadSheetHolder().getCellMap().put((int)
nr.getColumn(), cellData);
+
xlsReadContext.xlsReadSheetHolder().getCellMap().put(targetColumnIndex,
cellData);
xlsReadContext.xlsReadSheetHolder().setTempRowType(RowTypeEnum.DATA);
}
}
diff --git
a/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/RkRecordHandler.java
b/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/RkRecordHandler.java
index 99eaa087..502c9f34 100644
---
a/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/RkRecordHandler.java
+++
b/fesod-sheet/src/main/java/org/apache/fesod/sheet/analysis/v03/handlers/RkRecordHandler.java
@@ -25,6 +25,7 @@
package org.apache.fesod.sheet.analysis.v03.handlers;
+import java.util.List;
import org.apache.fesod.sheet.analysis.v03.IgnorableXlsRecordHandler;
import org.apache.fesod.sheet.context.xls.XlsReadContext;
import org.apache.fesod.sheet.metadata.data.ReadCellData;
@@ -39,9 +40,21 @@ public class RkRecordHandler extends
AbstractXlsRecordHandler implements Ignorab
@Override
public void processRecord(XlsReadContext xlsReadContext, Record record) {
RKRecord re = (RKRecord) record;
+ int originalColumnIndex = re.getColumn();
+
+ List<Integer> includeColumnIndexes =
+
xlsReadContext.readSheetHolder().getReadSheet().getColumnIndexes();
+
+ int targetColumnIndex = originalColumnIndex;
+ if (includeColumnIndexes != null) {
+ targetColumnIndex =
includeColumnIndexes.indexOf(originalColumnIndex);
+ if (targetColumnIndex < 0) {
+ return;
+ }
+ }
xlsReadContext
.xlsReadSheetHolder()
.getCellMap()
- .put((int) re.getColumn(),
ReadCellData.newEmptyInstance(re.getRow(), (int) re.getColumn()));
+ .put(targetColumnIndex,
ReadCellData.newEmptyInstance(re.getRow(), targetColumnIndex));
}
}
diff --git
a/fesod-sheet/src/test/java/org/apache/fesod/sheet/FesodSheetTest.java
b/fesod-sheet/src/test/java/org/apache/fesod/sheet/FesodSheetTest.java
index 8f267eb7..bcc6ad3e 100644
--- a/fesod-sheet/src/test/java/org/apache/fesod/sheet/FesodSheetTest.java
+++ b/fesod-sheet/src/test/java/org/apache/fesod/sheet/FesodSheetTest.java
@@ -27,6 +27,8 @@ import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
+import java.util.Date;
import java.util.List;
import java.util.Map;
import org.apache.commons.io.FileUtils;
@@ -316,4 +318,77 @@ class FesodSheetTest {
Assertions.assertEquals("1", parsedRow.get(0));
Assertions.assertEquals("30", parsedRow.get(1));
}
+
+ @Test
+ void testReadSheet_withColumnIndexes_xlsFormat() {
+ File xlsFile = tempDir.resolve("test.xls").toFile();
+
+ List<List<String>> head = new ArrayList<>();
+ head.add(Arrays.asList("ID"));
+ head.add(Arrays.asList("Name"));
+ head.add(Arrays.asList("Age"));
+ head.add(Arrays.asList("Gender"));
+
+ List<List<Object>> dataList = new ArrayList<>();
+ dataList.add(Arrays.asList("1", "Alice", "30", "Female"));
+
+ FesodSheet.write(xlsFile).head(head).sheet("Sheet1").doWrite(dataList);
+
+ List<Integer> targetColumns = Arrays.asList(0, 2);
+
+ List<Map<Integer, String>> readResults = FesodSheet.read(xlsFile)
+ .sheet(0)
+ .includeColumnIndexes(targetColumns)
+ .doReadSync();
+
+ Assertions.assertNotNull(readResults);
+ Map<Integer, String> parsedRow = readResults.get(0);
+ Assertions.assertEquals(2, parsedRow.size(), "Should only contain 2
filtered columns");
+ Assertions.assertEquals("1", parsedRow.get(0));
+ Assertions.assertEquals("30", parsedRow.get(1));
+ }
+
+ @Test
+ void testReadSheet_withColumnIndexes_xlsFormat_allCellTypes() {
+ File xlsFile = tempDir.resolve("test_all_types.xls").toFile();
+
+ List<List<String>> head = new ArrayList<>();
+ head.add(Arrays.asList("StringCol"));
+ head.add(Arrays.asList("NumberCol"));
+ head.add(Arrays.asList("BooleanCol"));
+ head.add(Arrays.asList("DateCol"));
+ head.add(Arrays.asList("FormulaCol"));
+ head.add(Arrays.asList("BlankCol"));
+
+ List<Object> row = new ArrayList<>();
+ row.add("Hello Fesod");
+ row.add(100.50);
+ row.add(true);
+ row.add(new Date());
+ row.add("=SUM(10, 20)");
+ row.add(null);
+
+ List<List<Object>> dataList = Collections.singletonList(row);
+
+ FesodSheet.write(xlsFile).head(head).sheet("Sheet1").doWrite(dataList);
+
+ List<Integer> targetColumns = Arrays.asList(0, 2, 4);
+
+ List<Map<Integer, String>> readResults = FesodSheet.read(xlsFile)
+ .sheet(0)
+ .includeColumnIndexes(targetColumns)
+ .doReadSync();
+
+ Assertions.assertNotNull(readResults);
+ Assertions.assertEquals(1, readResults.size());
+
+ Map<Integer, String> parsedRow = readResults.get(0);
+
+ Assertions.assertEquals(3, parsedRow.size(), "Should only contain the
3 requested target columns");
+
+ Assertions.assertEquals("Hello Fesod", parsedRow.get(0), "Target 0
should contain String from Col 0");
+ Assertions.assertEquals("TRUE", parsedRow.get(1).toUpperCase(),
"Target 1 should contain Boolean from Col 2");
+
+ Assertions.assertNotNull(parsedRow.get(2), "Target 2 should contain
Formula result from Col 4");
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]