diff options
author | Nick Burch <nick@apache.org> | 2014-03-17 19:02:21 +0000 |
---|---|---|
committer | Nick Burch <nick@apache.org> | 2014-03-17 19:02:21 +0000 |
commit | b63080e7c48eab1c98f2d8368b8948226d5c3711 (patch) | |
tree | 4ec6500992beb833fe7c812b93e3c9f6071bfeb3 | |
parent | b8c8567bc86a0249e869ba1a2bc57201bb7d7e2a (diff) | |
download | poi-b63080e7c48eab1c98f2d8368b8948226d5c3711.tar.gz poi-b63080e7c48eab1c98f2d8368b8948226d5c3711.zip |
Fix bug #56278 - Support loading .xlsx files with no Styles Table
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1578518 13f79535-47bb-0310-9956-ffa450edef68
-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 |