diff --git a/fesod-sheet/src/main/java/org/apache/fesod/sheet/metadata/csv/CsvRow.java b/fesod-sheet/src/main/java/org/apache/fesod/sheet/metadata/csv/CsvRow.java index 1a79220d7..1d11ad307 100644 --- a/fesod-sheet/src/main/java/org/apache/fesod/sheet/metadata/csv/CsvRow.java +++ b/fesod-sheet/src/main/java/org/apache/fesod/sheet/metadata/csv/CsvRow.java @@ -140,7 +140,7 @@ public short getLastCellNum() { @Override public int getPhysicalNumberOfCells() { - return getRowNum(); + return cellList.size(); } @Override diff --git a/fesod-sheet/src/test/java/org/apache/fesod/sheet/csv/CsvFormatTest.java b/fesod-sheet/src/test/java/org/apache/fesod/sheet/csv/CsvFormatTest.java index 3baefab62..63727baca 100644 --- a/fesod-sheet/src/test/java/org/apache/fesod/sheet/csv/CsvFormatTest.java +++ b/fesod-sheet/src/test/java/org/apache/fesod/sheet/csv/CsvFormatTest.java @@ -25,6 +25,7 @@ import java.io.PrintWriter; import java.nio.file.Files; import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; import java.util.List; import lombok.extern.slf4j.Slf4j; @@ -43,8 +44,11 @@ import org.apache.fesod.sheet.support.ExcelTypeEnum; import org.apache.fesod.sheet.util.DateUtils; import org.apache.fesod.sheet.util.TestFileUtil; +import org.apache.fesod.sheet.write.handler.WorkbookWriteHandler; +import org.apache.fesod.sheet.write.handler.context.WorkbookWriteHandlerContext; import org.apache.fesod.sheet.write.metadata.WriteSheet; import org.apache.fesod.sheet.write.metadata.holder.WriteWorkbookHolder; +import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Workbook; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; @@ -195,6 +199,28 @@ public void writeWithCommonCsv() { writeWithCommonCsv(csvFile, csvFormat, dataList(10, STRING_PREFIX)); } + @Test + public void testPhysicalNumberOfCells() { + csvFile = TestFileUtil.createNewFile(CSV_BASE + "csv-physical-cell-count.csv"); + List> head = Arrays.asList(Arrays.asList("No"), Arrays.asList("Name"), Arrays.asList("Age")); + List> data = Arrays.asList(Arrays.asList("1", "Jackson", "20")); + + FesodSheet.write(csvFile) + .head(head) + .registerWriteHandler(new WorkbookWriteHandler() { + @Override + public void afterWorkbookDispose(WorkbookWriteHandlerContext context) { + Row row = context.getWriteWorkbookHolder() + .getWorkbook() + .getSheetAt(0) + .getRow(0); + Assertions.assertEquals(3, row.getPhysicalNumberOfCells()); + } + }) + .csv() + .doWrite(data); + } + private void doTest( boolean isCreate, File csvFile,