git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1850207 13f79535-47bb-0310-9956-ffa450edef68tags/REL_4_1_0
@@ -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 { | |||
} | |||
} | |||
@@ -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); | |||
} | |||
} |