mirror of https://github.com/apache/poi.git
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
This commit is contained in:
parent
59a7919af6
commit
3aec436a34
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue