summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Burch <nick@apache.org>2014-03-17 19:02:21 +0000
committerNick Burch <nick@apache.org>2014-03-17 19:02:21 +0000
commitb63080e7c48eab1c98f2d8368b8948226d5c3711 (patch)
tree4ec6500992beb833fe7c812b93e3c9f6071bfeb3
parentb8c8567bc86a0249e869ba1a2bc57201bb7d7e2a (diff)
downloadpoi-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.java7
-rw-r--r--src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java15
-rw-r--r--test-data/spreadsheet/56278.xlsxbin0 -> 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
new file mode 100644
index 0000000000..f710851202
--- /dev/null
+++ b/test-data/spreadsheet/56278.xlsx
Binary files differ