You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ce...@apache.org on 2020/05/16 13:05:54 UTC
svn commit: r1877814 - in /poi/trunk:
src/ooxml/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java
src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java
test-data/spreadsheet/64420.xlsm
Author: centic
Date: Sat May 16 13:05:53 2020
New Revision: 1877814
URL: http://svn.apache.org/viewvc?rev=1877814&view=rev
Log:
Fix bug 64420: NPE in XSSFReader for files with macro-sheets
Added:
poi/trunk/test-data/spreadsheet/64420.xlsm
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java?rev=1877814&r1=1877813&r2=1877814&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java Sat May 16 13:05:53 2020
@@ -69,10 +69,9 @@ public class XSSFReader {
private static final Set<String> WORKSHEET_RELS =
Collections.unmodifiableSet(new HashSet<>(
- Arrays.asList(new String[]{
- XSSFRelation.WORKSHEET.getRelation(),
+ Arrays.asList(XSSFRelation.WORKSHEET.getRelation(),
XSSFRelation.CHARTSHEET.getRelation(),
- })
+ XSSFRelation.MACRO_SHEET_BIN.getRelation())
));
private static final POILogger LOGGER = POILogFactory.getLogger(XSSFReader.class);
Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java?rev=1877814&r1=1877813&r2=1877814&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java Sat May 16 13:05:53 2020
@@ -19,13 +19,18 @@ package org.apache.poi.xssf.eventusermod
import static org.apache.poi.POITestCase.assertContains;
import static org.apache.poi.POITestCase.assertNotContained;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.io.InputStream;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
-import java.util.HashSet;
import org.apache.poi.POIDataSamples;
import org.apache.poi.ooxml.POIXMLException;
@@ -36,7 +41,6 @@ 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;
import org.junit.Ignore;
@@ -88,8 +92,8 @@ public final class TestXSSFReader {
XSSFReader r = new XSSFReader(pkg);
- assertEquals(11, r.getSharedStringsTable().getItems().size());
- assertEquals("Test spreadsheet", new XSSFRichTextString(r.getSharedStringsTable().getEntryAt(0)).toString());
+ assertEquals(11, r.getSharedStringsTable().getSharedStringItems().size());
+ assertEquals("Test spreadsheet", r.getSharedStringsTable().getItemAt(0).toString());
}
}
@@ -173,7 +177,7 @@ public final class TestXSSFReader {
assertEquals(3, count);
}
}
-
+
/**
* Iterating over a workbook with chart sheets in it, using the
* XSSFReader method
@@ -293,7 +297,7 @@ public final class TestXSSFReader {
* bug 61304: Call to XSSFReader.getSheetsData() returns duplicate sheets.
*
* The problem seems to be caused only by those xlsx files which have a specific
- * order of the attributes inside the <sheet> tag of workbook.xml
+ * order of the attributes inside the <sheet> tag of workbook.xml
*
* Example (which causes the problems):
* <sheet name="Sheet6" r:id="rId6" sheetId="4"/>
@@ -325,4 +329,21 @@ public final class TestXSSFReader {
System.out.println("workbook.getName(\"total\").getSheetName() returned: " + name.getSheetName());
}
}
+
+ @Test
+ public void test64420() throws Exception {
+ try (OPCPackage pkg = OPCPackage.open(_ssTests.openResourceAsStream("64420.xlsm"))) {
+ XSSFReader reader = new XSSFReader(pkg);
+
+ Iterator<InputStream> iter = reader.getSheetsData();
+ byte[] data = new byte[4096];
+ while (iter.hasNext()) {
+ InputStream stream = iter.next();
+ assertNotNull(stream);
+ int read = IOUtils.readFully(stream, data);
+ assertTrue(read > 0);
+ stream.close();
+ }
+ }
+ }
}
Added: poi/trunk/test-data/spreadsheet/64420.xlsm
URL: http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/64420.xlsm?rev=1877814&view=auto
==============================================================================
Binary files poi/trunk/test-data/spreadsheet/64420.xlsm (added) and poi/trunk/test-data/spreadsheet/64420.xlsm Sat May 16 13:05:53 2020 differ
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org