You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ga...@apache.org on 2019/01/02 20:45:53 UTC
svn commit: r1850207 - in /poi/trunk/src:
ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java
testcases/org/apache/poi/ss/usermodel/BaseTestCell.java
Author: gallon
Date: Wed Jan 2 20:45:52 2019
New Revision: 1850207
URL: http://svn.apache.org/viewvc?rev=1850207&view=rev
Log:
Bug 62307: made Cell#getNumericCellValue() behavior consistent across HSSF/XSSF/SXSSF.\nAll three implementations throw ISE when trying to get numeric value from a boolean-valued cell, have it a formula set or not.
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java
poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java?rev=1850207&r1=1850206&r2=1850207&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java Wed Jan 2 20:45:52 2019
@@ -285,12 +285,10 @@ public final class XSSFCell implements C
*/
@Override
public double getNumericCellValue() {
- CellType cellType = getCellType();
- switch(cellType) {
+ CellType valueType = isFormulaCell() ? getCachedFormulaResultType() : getCellType();
+ switch(valueType) {
case BLANK:
return 0.0;
- case FORMULA:
- // fall-through
case NUMERIC:
if(_cell.isSetV()) {
String v = _cell.getV();
@@ -305,8 +303,10 @@ public final class XSSFCell implements C
} else {
return 0.0;
}
+ case FORMULA:
+ throw new AssertionError();
default:
- throw typeMismatch(CellType.NUMERIC, cellType, false);
+ throw typeMismatch(CellType.NUMERIC, valueType, false);
}
}
@@ -1361,4 +1361,4 @@ public final class XSSFCell implements C
}
}
-
\ No newline at end of file
+
Modified: poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java?rev=1850207&r1=1850206&r2=1850207&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java Wed Jan 2 20:45:52 2019
@@ -74,7 +74,7 @@ public abstract class BaseTestCell {
assertEquals(CellType.BOOLEAN, cell.getCellType());
cell.setCellValue(true);
assertTrue(cell.getBooleanCellValue());
- assertProhibitedValueAccess(cell, CellType.NUMERIC, CellType.STRING,
+ assertProhibitedValueAccess(cell, CellType.NUMERIC, CellType.STRING, CellType.BOOLEAN,
CellType.FORMULA, CellType.ERROR);
cell.setCellValue(factory.createRichTextString("Foo"));
@@ -1133,4 +1133,11 @@ public abstract class BaseTestCell {
assertEquals(CellType.FORMULA, cell.getCellType());
}
}
+
+ @Test
+ public void testGetNumericCellValueOnABlankCellReturnsZero() {
+ Cell cell = _testDataProvider.createWorkbook().createSheet().createRow(0).createCell(0);
+ assertEquals(CellType.BLANK, cell.getCellType());
+ assertEquals(0, cell.getNumericCellValue(), 0);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org