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-ffa450edef68tags/REL_3_5_BETA2
@@ -50,6 +50,8 @@ | |||
<action dev="POI-DEVELOPERS" type="add">Created a common interface for handling Excel files, irrespective of if they are .xls or .xlsx</action> | |||
</release> | |||
<release version="3.1.1-alpha1" date="2008-??-??"> | |||
<action dev="POI-DEVELOPERS" type="fix">45322 - Fixed NPE in HSSFSheet.autoSizeColumn() when cell number format was not found</action> | |||
<action dev="POI-DEVELOPERS" type="add">45380 - Missing return keyword in ArrayPtg.toFormulaString()</action> | |||
<action dev="POI-DEVELOPERS" type="add">44958 - Record level support for Data Tables. (No formula parser support though)</action> | |||
<action dev="POI-DEVELOPERS" type="add">35583 - Include a version class, org.apache.poi.Version, to allow easy introspection of the POI version</action> | |||
<action dev="POI-DEVELOPERS" type="add">Allow the cloning of one HSSFCellStyle onto another, including cloning styles from one HSSFWorkbook onto another</action> |
@@ -47,6 +47,8 @@ | |||
<action dev="POI-DEVELOPERS" type="add">Created a common interface for handling Excel files, irrespective of if they are .xls or .xlsx</action> | |||
</release> | |||
<release version="3.1.1-alpha1" date="2008-??-??"> | |||
<action dev="POI-DEVELOPERS" type="fix">45322 - Fixed NPE in HSSFSheet.autoSizeColumn() when cell number format was not found</action> | |||
<action dev="POI-DEVELOPERS" type="add">45380 - Missing return keyword in ArrayPtg.toFormulaString()</action> | |||
<action dev="POI-DEVELOPERS" type="add">44958 - Record level support for Data Tables. (No formula parser support though)</action> | |||
<action dev="POI-DEVELOPERS" type="add">35583 - Include a version class, org.apache.poi.Version, to allow easy introspection of the POI version</action> | |||
<action dev="POI-DEVELOPERS" type="add">Allow the cloning of one HSSFCellStyle onto another, including cloning styles from one HSSFWorkbook onto another</action> |
@@ -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(); |
@@ -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 |
@@ -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; |
@@ -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); | |||
} | |||
} |
@@ -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); | |||
} | |||
} |