Browse Source

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.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1850207 13f79535-47bb-0310-9956-ffa450edef68
tags/REL_4_1_0
Vladislav Galas 5 years ago
parent
commit
3aec436a34

+ 6
- 6
src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java View File

@@ -285,12 +285,10 @@ public final class XSSFCell implements Cell {
*/
@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 Cell {
} 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 Cell {
}
}

+ 8
- 1
src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java View File

@@ -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);
}
}

Loading…
Cancel
Save