From b3e2a14d9a2f7a56710da17c1bf171afa8125a73 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Tue, 15 Jul 2008 18:56:24 +0000 Subject: [PATCH] Merged revisions 638786-638802,638805-638811,638813-638814,638816-639230,639233-639241,639243-639253,639255-639486,639488-639601,639603-639835,639837-639917,639919-640056,640058-640710,640712-641156,641158-641184,641186-641795,641797-641798,641800-641933,641935-641963,641965-641966,641968-641995,641997-642230,642232-642562,642564-642565,642568-642570,642572-642573,642576-642736,642739-642877,642879,642881-642890,642892-642903,642905-642945,642947-643624,643626-643653,643655-643669,643671,643673-643830,643832-643833,643835-644342,644344-644472,644474-644508,644510-645347,645349-645351,645353-645559,645561-645565,645568-645951,645953-646193,646195-646311,646313-646404,646406-646665,646667-646853,646855-646869,646871-647151,647153-647185,647187-647277,647279-647566,647568-647573,647575,647578-647711,647714-647737,647739-647823,647825-648155,648157-648202,648204-648273,648275,648277-648302,648304-648333,648335-648588,648590-648622,648625-648673,648675-649141,649144,649146-649556,649558-649795,649799,649801-649910,649912-649913,649915-650128,650131-650132,650134-650137,650140-650914,650916-651991,651993-652284,652286-652287,652289,652291,652293-652297,652299-652328,652330-652425,652427-652445,652447-652560,652562-652933,652935,652937-652993,652995-653116,653118-653124,653126-653483,653487-653519,653522-653550,653552-653607,653609-653667,653669-653674,653676-653814,653817-653830,653832-653891,653893-653944,653946-654055,654057-654355,654357-654365,654367-654648,654651-655215,655217-655277,655279-655281,655283-655911,655913-656212,656214,656216-656251,656253-656698,656700-656756,656758-656892,656894-657135,657137-657165,657168-657179,657181-657354,657356-657357,657359-657701,657703-657874,657876-658032,658034-658284,658286,658288-658301,658303-658307,658309-658321,658323-658335,658337-658348,658351,658353-658832,658834-658983,658985,658987-659066,659068-659402,659404-659428,659430-659451,659453-659454,659456-659461,659463-659477,659479-659524,659526-659571,659574,659576-660255,660257-660262,660264-660279,660281-660343,660345-660473,660475-660827,660829-660833,660835-660888,660890-663321,663323-663435,663437-663764,663766-663854,663856-664219,664221-664489,664494-664514,664516-668013,668015-668142,668144-668152,668154,668156-668256,668258,668260-669139,669141-669455,669457-669657,669659-669808,669810-670189,670191-671321,671323-672229,672231-672549,672551-672552,672554-672561,672563-672566,672568,672571-673049,673051-673852,673854-673862,673864-673986,673988-673996,673998-674347,674349-674890,674892-674910,674912-674936,674938-674952,674954-675078,675080-675085,675087-675217,675219-675660,675662-675670,675672-675716,675718-675726,675728-675733,675735-675775,675777-675782,675784,675786-675791,675794-675852,675854-676200,676202,676204,676206-676220,676222-676309,676311-677004 via svnmerge from https://svn.apache.org/repos/asf/poi/trunk ........ r676457 | josh | 2008-07-14 00:23:13 +0100 (Mon, 14 Jul 2008) | 1 line Fix for bug 45380 - added return keyword in ArrayPtg.toFormulaString() ........ r676995 | yegor | 2008-07-15 19:13:50 +0100 (Tue, 15 Jul 2008) | 1 line fixed bug #45322: HSSFSheet.autoSizeColumn() throws NPE when cell number format was not found ........ git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@677006 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/changes.xml | 2 ++ src/documentation/content/xdocs/status.xml | 2 ++ .../poi/hssf/record/formula/ArrayPtg.java | 2 +- .../poi/hssf/usermodel/HSSFCellStyle.java | 10 +++++---- .../apache/poi/hssf/usermodel/HSSFSheet.java | 4 +--- .../org/apache/poi/hssf/data/45322.xls | Bin 0 -> 86528 bytes .../poi/hssf/record/formula/TestArrayPtg.java | 19 +++++++++++++++++- .../apache/poi/hssf/usermodel/TestBugs.java | 9 +++++++++ 8 files changed, 39 insertions(+), 9 deletions(-) create mode 100644 src/testcases/org/apache/poi/hssf/data/45322.xls diff --git a/src/documentation/content/xdocs/changes.xml b/src/documentation/content/xdocs/changes.xml index 7e1ccbfba..1fee98e86 100644 --- a/src/documentation/content/xdocs/changes.xml +++ b/src/documentation/content/xdocs/changes.xml @@ -50,6 +50,8 @@ Created a common interface for handling Excel files, irrespective of if they are .xls or .xlsx + 45322 - Fixed NPE in HSSFSheet.autoSizeColumn() when cell number format was not found + 45380 - Missing return keyword in ArrayPtg.toFormulaString() 44958 - Record level support for Data Tables. (No formula parser support though) 35583 - Include a version class, org.apache.poi.Version, to allow easy introspection of the POI version Allow the cloning of one HSSFCellStyle onto another, including cloning styles from one HSSFWorkbook onto another diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index febf5bd1d..e6472d6e9 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -47,6 +47,8 @@ Created a common interface for handling Excel files, irrespective of if they are .xls or .xlsx + 45322 - Fixed NPE in HSSFSheet.autoSizeColumn() when cell number format was not found + 45380 - Missing return keyword in ArrayPtg.toFormulaString() 44958 - Record level support for Data Tables. (No formula parser support though) 35583 - Include a version class, org.apache.poi.Version, to allow easy introspection of the POI version Allow the cloning of one HSSFCellStyle onto another, including cloning styles from one HSSFWorkbook onto another diff --git a/src/java/org/apache/poi/hssf/record/formula/ArrayPtg.java b/src/java/org/apache/poi/hssf/record/formula/ArrayPtg.java index 371753007..b38bcd27d 100644 --- a/src/java/org/apache/poi/hssf/record/formula/ArrayPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/ArrayPtg.java @@ -176,7 +176,7 @@ public final class ArrayPtg extends Ptg { return ((Double)o).toString(); } if (o instanceof Boolean) { - ((Boolean)o).toString(); + return ((Boolean)o).booleanValue() ? "TRUE" : "FALSE"; } if (o instanceof ErrorConstant) { return ((ErrorConstant)o).getText(); diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFCellStyle.java b/src/java/org/apache/poi/hssf/usermodel/HSSFCellStyle.java index 5bf795e45..64c5b6df4 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFCellStyle.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFCellStyle.java @@ -280,21 +280,23 @@ public class HSSFCellStyle implements CellStyle * Get the contents of the format string, by looking up * the DataFormat against the bound workbook * @see org.apache.poi.hssf.usermodel.HSSFDataFormat + * @return the format string or "General" if not found */ public String getDataFormatString() { - HSSFDataFormat format = new HSSFDataFormat(workbook); - - return format.getFormat(getDataFormat()); + return getDataFormatString(workbook); } /** * Get the contents of the format string, by looking up * the DataFormat against the supplied workbook * @see org.apache.poi.hssf.usermodel.HSSFDataFormat + * + * @return the format string or "General" if not found */ public String getDataFormatString(org.apache.poi.ss.usermodel.Workbook workbook) { HSSFDataFormat format = new HSSFDataFormat( ((HSSFWorkbook)workbook).getWorkbook() ); - return format.getFormat(getDataFormat()); + int idx = getDataFormat(); + return idx == -1 ? "General" : format.getFormat(getDataFormat()); } /** * Get the contents of the format string, by looking up diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java index e9e3be6b3..d4bc9613d 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java @@ -1868,9 +1868,7 @@ public class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet } else { String sval = null; if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { - HSSFDataFormat dataformat = wb.createDataFormat(); - short idx = style.getDataFormat(); - String format = dataformat.getFormat(idx).replaceAll("\"", ""); + String format = style.getDataFormatString().replaceAll("\"", ""); double value = cell.getNumericCellValue(); try { NumberFormat fmt; diff --git a/src/testcases/org/apache/poi/hssf/data/45322.xls b/src/testcases/org/apache/poi/hssf/data/45322.xls new file mode 100644 index 0000000000000000000000000000000000000000..711721400e984db67c87bbf23d0b7e579f0218fc GIT binary patch literal 86528 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 F{7=c8k!t_| literal 0 HcmV?d00001 diff --git a/src/testcases/org/apache/poi/hssf/record/formula/TestArrayPtg.java b/src/testcases/org/apache/poi/hssf/record/formula/TestArrayPtg.java index 2ba27e963..14bcde38b 100644 --- a/src/testcases/org/apache/poi/hssf/record/formula/TestArrayPtg.java +++ b/src/testcases/org/apache/poi/hssf/record/formula/TestArrayPtg.java @@ -102,7 +102,7 @@ public final class TestArrayPtg extends TestCase { public void testElementOrderingInSpreadsheet() { HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("ex42564-elementOrder.xls"); - // The formula has an array with 3 rows and 5 column + // The formula has an array with 3 rows and 5 columns String formula = wb.getSheetAt(0).getRow(0).getCell((short)0).getCellFormula(); // TODO - These number literals should not have '.0'. Excel has different number rendering rules @@ -111,4 +111,21 @@ public final class TestArrayPtg extends TestCase { } assertEquals("SUM({1.0,2.0,3.0;4.0,5.0,6.0;7.0,8.0,9.0;10.0,11.0,12.0;13.0,14.0,15.0})", formula); } + + public void testToFormulaString() { + ArrayPtg ptg = new ArrayPtg(new TestcaseRecordInputStream(ArrayPtg.sid, ENCODED_PTG_DATA)); + + ptg.readTokenValues(new TestcaseRecordInputStream(0, ENCODED_CONSTANT_DATA)); + + String actualFormula; + try { + actualFormula = ptg.toFormulaString(null); + } catch (IllegalArgumentException e) { + if (e.getMessage().equals("Unexpected constant class (java.lang.Boolean)")) { + throw new AssertionFailedError("Identified bug 45380"); + } + throw e; + } + assertEquals("{TRUE,\"ABCD\";\"E\",0.0;FALSE,\"FG\"}", actualFormula); + } } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java index 24d7ccfda..40e4bd34d 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java @@ -1354,4 +1354,13 @@ public final class TestBugs extends TestCase { // TODO - check the formula once tables and // arrays are properly supported } + + /** + * 45322: HSSFSheet.autoSizeColumn fails when style.getDataFormat() returns -1 + */ + public void test45322() throws Exception { + HSSFWorkbook wb = openSample("44958.xls"); + HSSFSheet sh = wb.getSheetAt(0); + for(short i=0; i < 30; i++) sh.autoSizeColumn(i); + } }