From 696b9d6406b9f08458b32387aadb21ea5ba210ea Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 14 Jul 2014 18:53:39 +0000 Subject: [PATCH] Fix for #56702 - If a cell is of type numeric but has an empty tag, return as 0 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1610482 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/xssf/usermodel/XSSFCell.java | 4 ++- .../poi/xssf/usermodel/TestXSSFBugs.java | 25 ++++++++++++++++++ test-data/spreadsheet/56702.xlsx | Bin 0 -> 25108 bytes 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 test-data/spreadsheet/56702.xlsx diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java index b74cc3b89..e12e3e1b7 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java @@ -206,8 +206,10 @@ public final class XSSFCell implements Cell { case CELL_TYPE_FORMULA: case CELL_TYPE_NUMERIC: if(_cell.isSetV()) { + String v = _cell.getV(); + if (v.isEmpty()) return 0.0; try { - return Double.parseDouble(_cell.getV()); + return Double.parseDouble(v); } catch(NumberFormatException e) { throw typeMismatch(CELL_TYPE_NUMERIC, CELL_TYPE_STRING, false); } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index b54da4f28..93d906f5e 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -1628,6 +1628,31 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { saveAndReloadReport(wb, xlsOutput); } + /** + * XSSFCell.typeMismatch on certain blank cells when formatting + * with DataFormatter + */ + @Test + public void bug56702() throws Exception { + XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("56702.xlsx"); + + Sheet sheet = wb.getSheetAt(0); + + // Get wrong cell by row 8 & column 7 + Cell cell = sheet.getRow(8).getCell(7); + assertEquals(Cell.CELL_TYPE_NUMERIC, cell.getCellType()); + + // Check the value - will be zero as it is + assertEquals(0.0, cell.getNumericCellValue(), 0.001); + + // Try to format + DataFormatter formatter = new DataFormatter(); + formatter.formatCellValue(cell); + + // Check the formatting + assertEquals("0", formatter.formatCellValue(cell)); + } + private void saveAndReloadReport(Workbook wb, File outFile) throws IOException { // run some method on the font to verify if it is "disconnected" already //for(short i = 0;i < 256;i++) diff --git a/test-data/spreadsheet/56702.xlsx b/test-data/spreadsheet/56702.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..c17a0bca8bc625725f767601db94038fab7df210 GIT binary patch literal 25108 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 literal 0 HcmV?d00001