You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ni...@apache.org on 2016/02/11 16:13:40 UTC
svn commit: r1729849 - in /poi/trunk/src:
ooxml/java/org/apache/poi/xssf/streaming/SXSSFCell.java
testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java
Author: nick
Date: Thu Feb 11 15:13:40 2016
New Revision: 1729849
URL: http://svn.apache.org/viewvc?rev=1729849&view=rev
Log:
Fix #57034 on SXSSF, and add a common unit test to show it was already fixed on the others + is now fixed for SXSSF
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFCell.java
poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFCell.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFCell.java?rev=1729849&r1=1729848&r2=1729849&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFCell.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFCell.java Thu Feb 11 15:13:40 2016
@@ -245,7 +245,7 @@ public class SXSSFCell implements Cell {
{
XSSFRichTextString xvalue = (XSSFRichTextString)value;
- if (xvalue != null) {
+ if (xvalue != null && xvalue.getString() != null) {
ensureRichTextStringType();
if (xvalue.length() > SpreadsheetVersion.EXCEL2007.getMaxTextLength()) {
@@ -271,16 +271,20 @@ public class SXSSFCell implements Cell {
@Override
public void setCellValue(String value)
{
- ensureTypeOrFormulaType(CELL_TYPE_STRING);
-
- if(value != null && value.length() > SpreadsheetVersion.EXCEL2007.getMaxTextLength()){
- throw new IllegalArgumentException("The maximum length of cell contents (text) is 32,767 characters");
+ if (value != null) {
+ ensureTypeOrFormulaType(CELL_TYPE_STRING);
+
+ if(value != null && value.length() > SpreadsheetVersion.EXCEL2007.getMaxTextLength()){
+ throw new IllegalArgumentException("The maximum length of cell contents (text) is 32,767 characters");
+ }
+
+ if(_value.getType()==CELL_TYPE_FORMULA)
+ ((StringFormulaValue)_value).setPreEvaluatedValue(value);
+ else
+ ((PlainStringValue)_value).setValue(value);
+ } else {
+ setCellType(CELL_TYPE_BLANK);
}
-
- if(_value.getType()==CELL_TYPE_FORMULA)
- ((StringFormulaValue)_value).setPreEvaluatedValue(value);
- else
- ((PlainStringValue)_value).setValue(value);
}
/**
Modified: poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java?rev=1729849&r1=1729848&r2=1729849&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java Thu Feb 11 15:13:40 2016
@@ -1380,4 +1380,27 @@ public abstract class BaseTestBugzillaIs
wb.close();
}
+
+ /**
+ * If someone sets a null string as a cell value, treat
+ * it as an empty cell, and avoid a NPE on auto-sizing
+ */
+ @Test
+ public void test57034() throws Exception {
+ Workbook wb = _testDataProvider.createWorkbook();
+ Sheet s = wb.createSheet();
+ Cell cell = s.createRow(0).createCell(0);
+ cell.setCellValue((String)null);
+ assertEquals(Cell.CELL_TYPE_BLANK, cell.getCellType());
+
+ _testDataProvider.trackColumnsForAutosizing(s, 0);
+
+ s.autoSizeColumn(0);
+ assertEquals(2048, s.getColumnWidth(0));
+
+ s.autoSizeColumn(0, true);
+ assertEquals(2048, s.getColumnWidth(0));
+
+ wb.close();
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org