Author: fanningpj
Date: Mon Jul 3 20:54:56 2023
New Revision: 1910759
URL: http://svn.apache.org/viewvc?rev=1910759&view=rev
Log:
[bug-62181] try to handle file where shared string loading is happening twice
Added:
poi/trunk/test-data/spreadsheet/bug62181.xlsx (with props)
Modified:
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFBugs.java
Modified:
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java?rev=1910759&r1=1910758&r2=1910759&view=diff
==============================================================================
---
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
(original)
+++
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
Mon Jul 3 20:54:56 2023
@@ -412,7 +412,14 @@ public class XSSFWorkbook extends POIXML
if (packageReadOnly) {
sharedStringSource = new SharedStringsTable();
} else {
- sharedStringSource =
(SharedStringsTable)createRelationship(XSSFRelation.SHARED_STRINGS,
this.xssfFactory);
+ List<PackagePart> matchingParts =
getPackagePart().getPackage()
+
.getPartsByContentType(XSSFRelation.SHARED_STRINGS.getContentType());
+ if (matchingParts.isEmpty()) {
+ sharedStringSource = (SharedStringsTable)
+
createRelationship(XSSFRelation.SHARED_STRINGS, this.xssfFactory);
+ } else {
+ sharedStringSource = new
SharedStringsTable(matchingParts.get(0));
+ }
}
}
Modified:
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFBugs.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFBugs.java?rev=1910759&r1=1910758&r2=1910759&view=diff
==============================================================================
---
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFBugs.java
(original)
+++
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFBugs.java
Mon Jul 3 20:54:56 2023
@@ -110,6 +110,7 @@ import org.apache.poi.xssf.XSSFITestData
import org.apache.poi.xssf.XSSFTestDataSamples;
import org.apache.poi.xssf.eventusermodel.XSSFReader;
import org.apache.poi.xssf.model.CalculationChain;
+import org.apache.poi.xssf.model.SharedStringsTable;
import org.apache.poi.xssf.model.StylesTable;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.extensions.XSSFCellFill;
@@ -3854,6 +3855,15 @@ public final class TestXSSFBugs extends
}
}
+ @Test
+ void testBug62181() throws Exception {
+ try (XSSFWorkbook wb = openSampleWorkbook("bug62181.xlsx")) {
+ SharedStringsTable sst = wb.getSharedStringSource();
+ assertNotNull(sst);
+ assertEquals(0, sst.getCount());
+ }
+ }
+
private static void readByCommonsCompress(File temp_excel_poi) throws
IOException {
/* read by commons-compress*/
try (ZipFile zipFile = new ZipFile(temp_excel_poi)) {
Added: poi/trunk/test-data/spreadsheet/bug62181.xlsx
URL:
http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/bug62181.xlsx?rev=1910759&view=auto
==============================================================================
Binary file - no diff available.
Propchange: poi/trunk/test-data/spreadsheet/bug62181.xlsx
------------------------------------------------------------------------------
--- svn:mime-type (added)
+++ svn:mime-type Mon Jul 3 20:54:56 2023
@@ -0,0 +1 @@
+application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]