Browse Source

Bugzilla 52348: Avoid exception when creating cell style in a workbook that has an empty xf table

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1220659 13f79535-47bb-0310-9956-ffa450edef68
tags/REL_3_8_FINAL
Yegor Kozlov 12 years ago
parent
commit
1b65bb839a

+ 1
- 0
src/documentation/content/xdocs/status.xml View File

@@ -34,6 +34,7 @@

<changes>
<release version="3.8-beta6" date="2012-??-??">
<action dev="poi-developers" type="fix">52348 - Avoid exception when creating cell style in a workbook that has an empty xf table</action>
<action dev="poi-developers" type="fix">52219 - fixed XSSFSimpleShape to set rich text attributes from XSSFRichtextString</action>
<action dev="poi-developers" type="fix">52314 - enhanced SheetUtil.getColumnWidth</action>
</release>

+ 3
- 3
src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java View File

@@ -68,15 +68,15 @@ public class XSSFCellStyle implements CellStyle {

/**
* Creates a Cell Style from the supplied parts
* @param cellXfId The main XF for the cell
* @param cellStyleXfId Optional, style xf
* @param cellXfId The main XF for the cell. Must be a valid 0-based index into the XF table
* @param cellStyleXfId Optional, style xf. A value of <code>-1</code> means no xf.
* @param stylesSource Styles Source to work off
*/
public XSSFCellStyle(int cellXfId, int cellStyleXfId, StylesTable stylesSource, ThemesTable theme) {
_cellXfId = cellXfId;
_stylesSource = stylesSource;
_cellXf = stylesSource.getCellXfAt(this._cellXfId);
_cellStyleXf = stylesSource.getCellStyleXfAt(cellStyleXfId);
_cellStyleXf = cellStyleXfId == -1 ? null : stylesSource.getCellStyleXfAt(cellStyleXfId);
_theme = theme;
}


+ 15
- 0
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java View File

@@ -691,4 +691,19 @@ public class TestXSSFCellStyle extends TestCase {
assertEquals(fmtClone.getFormat("Test##"), reload.getDataFormat());
assertFalse(fmtClone.getFormat("Test##") == fmt.getFormat("Test##"));
}

/**
* Avoid ArrayIndexOutOfBoundsException when creating cell style
* in a workbook that has an empty xf table.
*/
public void testBug52348() {
XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("52348.xlsx");
StylesTable st = workbook.getStylesSource();
assertEquals(0, st._getStyleXfsSize());
XSSFCellStyle style = workbook.createCellStyle(); // no exception at this point
assertNull(style.getStyleXf());
}

}

BIN
test-data/spreadsheet/52348.xlsx View File


Loading…
Cancel
Save