From d1aab350fda7825990ac248854325a442d83929a Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Fri, 11 Feb 2011 12:31:40 +0000 Subject: [PATCH] Fix bug #50756 - When formatting numbers based on their Cell Style, treat GENERAL the same as the more typical General git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1069775 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/status.xml | 1 + .../poi/ss/usermodel/DataFormatter.java | 2 +- .../apache/poi/hssf/usermodel/TestBugs.java | 33 ++++++++++++++++++ test-data/spreadsheet/50756.xls | Bin 0 -> 11264 bytes 4 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 test-data/spreadsheet/50756.xls diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index 6bcbea14e..9d8639c9c 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ + 50756 - When formatting numbers based on their Cell Style, treat GENERAL the same as the more typical General fixed HSSFWorkbook.createCellStyle to throw exception if the maximum number of cell styles was exceeded 50539 - Better fix for html-style br tags (invalid XML) inside XSSF documents 49928 - allow overridden built-in formats in HSSFCellStyle diff --git a/src/java/org/apache/poi/ss/usermodel/DataFormatter.java b/src/java/org/apache/poi/ss/usermodel/DataFormatter.java index de586db66..38afc61d3 100644 --- a/src/java/org/apache/poi/ss/usermodel/DataFormatter.java +++ b/src/java/org/apache/poi/ss/usermodel/DataFormatter.java @@ -196,7 +196,7 @@ public class DataFormatter { if (format != null) { return format; } - if ("General".equals(formatStr) || "@".equals(formatStr)) { + if ("General".equalsIgnoreCase(formatStr) || "@".equals(formatStr)) { if (DataFormatter.isWholeNumber(cellValue)) { return generalWholeNumFormat; } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java index 09ff05c0c..440f3a395 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java @@ -43,6 +43,7 @@ import org.apache.poi.ss.formula.ptg.Ptg; import org.apache.poi.ss.usermodel.BaseTestBugzillaIssues; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.DataFormatter; import org.apache.poi.ss.usermodel.Name; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; @@ -1953,4 +1954,36 @@ if(1==2) { assertEquals("Cell A,1", sheet.getRow(1).getCell(0).getStringCellValue()); assertEquals("Cell A,3", sheet.getRow(2).getCell(0).getStringCellValue()); } + + /** + * If you send a file between Excel and OpenOffice enough, something + * will turn the "General" format into "GENERAL" + */ + public void test50756() throws Exception { + HSSFWorkbook wb = openSample("50756.xls"); + HSSFSheet s = wb.getSheetAt(0); + HSSFRow r17 = s.getRow(16); + HSSFRow r18 = s.getRow(17); + HSSFDataFormatter df = new HSSFDataFormatter(); + + assertEquals(10.0, r17.getCell(1).getNumericCellValue()); + assertEquals(20.0, r17.getCell(2).getNumericCellValue()); + assertEquals(20.0, r17.getCell(3).getNumericCellValue()); + assertEquals("GENERAL", r17.getCell(1).getCellStyle().getDataFormatString()); + assertEquals("GENERAL", r17.getCell(2).getCellStyle().getDataFormatString()); + assertEquals("GENERAL", r17.getCell(3).getCellStyle().getDataFormatString()); + assertEquals("10", df.formatCellValue(r17.getCell(1))); + assertEquals("20", df.formatCellValue(r17.getCell(2))); + assertEquals("20", df.formatCellValue(r17.getCell(3))); + + assertEquals(16.0, r18.getCell(1).getNumericCellValue()); + assertEquals(35.0, r18.getCell(2).getNumericCellValue()); + assertEquals(123.0, r18.getCell(3).getNumericCellValue()); + assertEquals("GENERAL", r18.getCell(1).getCellStyle().getDataFormatString()); + assertEquals("GENERAL", r18.getCell(2).getCellStyle().getDataFormatString()); + assertEquals("GENERAL", r18.getCell(3).getCellStyle().getDataFormatString()); + assertEquals("16", df.formatCellValue(r18.getCell(1))); + assertEquals("35", df.formatCellValue(r18.getCell(2))); + assertEquals("123", df.formatCellValue(r18.getCell(3))); + } } diff --git a/test-data/spreadsheet/50756.xls b/test-data/spreadsheet/50756.xls new file mode 100644 index 0000000000000000000000000000000000000000..f7e595dbf830380dcf8d9d2b8fbf495827a58e3b GIT binary patch literal 11264 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 literal 0 HcmV?d00001