diff --git a/src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java b/src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java index 85613d3e4..b964ced1d 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java @@ -27,6 +27,7 @@ import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.util.IOUtils; import org.apache.poi.xssf.XSSFTestDataSamples; import org.apache.poi.xssf.model.CommentsTable; +import org.apache.poi.xssf.model.StylesTable; import org.apache.poi.xssf.usermodel.XSSFRichTextString; import org.apache.poi.xssf.usermodel.XSSFShape; import org.apache.poi.xssf.usermodel.XSSFSimpleShape; @@ -196,4 +197,22 @@ public final class TestXSSFReader extends TestCase { assertTrue(text.indexOf("Line 3") > -1); } + + /** + * NPE from XSSFReader$SheetIterator. on XLSX files generated by + * the openpyxl library + */ + public void test58747() throws Exception { + OPCPackage pkg = XSSFTestDataSamples.openSamplePackage("58747.xlsx"); + ReadOnlySharedStringsTable strings = new ReadOnlySharedStringsTable(pkg); + XSSFReader reader = new XSSFReader(pkg); + StylesTable styles = reader.getStylesTable(); + + XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator) reader.getSheetsData(); + assertEquals(true, iter.hasNext()); + iter.next(); + + assertEquals(false, iter.hasNext()); + assertEquals("Orders", iter.getSheetName()); + } } diff --git a/test-data/spreadsheet/58747.xlsx b/test-data/spreadsheet/58747.xlsx new file mode 100644 index 000000000..2bfec8a55 Binary files /dev/null and b/test-data/spreadsheet/58747.xlsx differ