diff options
-rw-r--r-- | src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java | 7 | ||||
-rw-r--r-- | src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java | 15 | ||||
-rw-r--r-- | test-data/spreadsheet/56278.xlsx | bin | 0 -> 7774 bytes |
3 files changed, 21 insertions, 1 deletions
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java index 5018c71ea3..2955300e42 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java @@ -295,10 +295,15 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X shIdMap.put(p.getPackageRelationship().getId(), (XSSFSheet)p); } } + + if (stylesSource == null) { + // Create Styles if it is missing + stylesSource = (StylesTable)createRelationship(XSSFRelation.STYLES, XSSFFactory.getInstance()); + } stylesSource.setTheme(theme); if(sharedStringSource == null) { - //Create SST if it is missing + // Create SST if it is missing sharedStringSource = (SharedStringsTable)createRelationship(XSSFRelation.SHARED_STRINGS, XSSFFactory.getInstance()); } 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 3c24acc7fd..e456992a5e 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -1440,4 +1440,19 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { assertEquals("#@_#", c.getStringCellValue()); assertEquals("http://invalid.uri", c.getHyperlink().getAddress()); } + + /** + * Was giving NullPointerException + * at org.apache.poi.xssf.usermodel.XSSFWorkbook.onDocumentRead + * due to a lack of Styles Table + */ + @Test + public void bug56278() throws Exception { + Workbook wb = XSSFTestDataSamples.openSampleWorkbook("56278.xlsx"); + assertEquals(0, wb.getSheetIndex("Market Rates")); + + // Save and re-check + Workbook nwb = XSSFTestDataSamples.writeOutAndReadBack(wb); + assertEquals(0, nwb.getSheetIndex("Market Rates")); + } } diff --git a/test-data/spreadsheet/56278.xlsx b/test-data/spreadsheet/56278.xlsx Binary files differnew file mode 100644 index 0000000000..f710851202 --- /dev/null +++ b/test-data/spreadsheet/56278.xlsx |