From: Dominik Stadler Date: Mon, 22 Dec 2014 11:11:34 +0000 (+0000) Subject: Bug 56644: Fix adding cells if MissingCellPolicy is set to NULL_FOR_BLANK and the... X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=0b6867d1d51e0820c93113830e0355b81421858b;p=poi.git Bug 56644: Fix adding cells if MissingCellPolicy is set to NULL_FOR_BLANK and the last column in a row is empty git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1647291 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java index 04a91b6240..df8cbf2d2c 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java @@ -37,6 +37,7 @@ import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.FormulaError; import org.apache.poi.ss.usermodel.Hyperlink; import org.apache.poi.ss.usermodel.RichTextString; +import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellReference; import org.apache.poi.util.Internal; @@ -107,7 +108,7 @@ public final class XSSFCell implements Cell { } else { int prevNum = row.getLastCellNum(); if(prevNum != -1){ - _cellNum = row.getCell(prevNum-1).getColumnIndex() + 1; + _cellNum = row.getCell(prevNum-1, Row.RETURN_NULL_AND_BLANK).getColumnIndex() + 1; } } _sharedStringSource = row.getSheet().getWorkbook().getSharedStringSource(); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java index 4dcaf63bf8..e48f7705e8 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java @@ -407,4 +407,40 @@ public final class TestXSSFCell extends BaseTestCell { XSSFTestDataSamples.writeOutAndReadBack(wb); } + + public void testBug56644ReturnNull() throws IOException { + Workbook wb = XSSFTestDataSamples.openSampleWorkbook("56644.xlsx"); + try { + wb.setMissingCellPolicy(Row.RETURN_BLANK_AS_NULL); + Sheet sheet = wb.getSheet("samplelist"); + Row row = sheet.getRow(20); + row.createCell(2); + } finally { + wb.close(); + } + } + + public void testBug56644ReturnBlank() throws IOException { + Workbook wb = XSSFTestDataSamples.openSampleWorkbook("56644.xlsx"); + try { + wb.setMissingCellPolicy(Row.RETURN_NULL_AND_BLANK); + Sheet sheet = wb.getSheet("samplelist"); + Row row = sheet.getRow(20); + row.createCell(2); + } finally { + wb.close(); + } + } + + public void testBug56644CreateBlank() throws IOException { + Workbook wb = XSSFTestDataSamples.openSampleWorkbook("56644.xlsx"); + try { + wb.setMissingCellPolicy(Row.CREATE_NULL_AS_BLANK); + Sheet sheet = wb.getSheet("samplelist"); + Row row = sheet.getRow(20); + row.createCell(2); + } finally { + wb.close(); + } + } } diff --git a/test-data/spreadsheet/56644.xlsx b/test-data/spreadsheet/56644.xlsx new file mode 100644 index 0000000000..f82be17929 Binary files /dev/null and b/test-data/spreadsheet/56644.xlsx differ