Author: fanningpj
Date: Sat Aug 13 16:11:03 2022
New Revision: 1903395
URL: http://svn.apache.org/viewvc?rev=1903395&view=rev
Log:
[bug-66212] try to remove table part for table when removing table
Modified:
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFTable.java
Modified:
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java?rev=1903395&r1=1903394&r2=1903395&view=diff
==============================================================================
---
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
(original)
+++
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
Sat Aug 13 16:11:03 2022
@@ -4312,10 +4312,16 @@ public class XSSFSheet extends POIXMLDoc
removeRelation(getRelationById(toDelete.getKey()), true);
tables.remove(toDelete.getKey());
toDelete.getValue().onTableDelete();
- OPCPackage opcPackage = getWorkbook().getPackage();
- PackagePart packagePart = t.getPackagePart();
- if (packagePart != null &&
opcPackage.containPart(packagePart.getPartName())) {
- opcPackage.removePart(packagePart);
+ CTTableParts tblParts = worksheet.getTableParts();
+ int matchedPos = -1;
+ for (int i = 0; i < tblParts.sizeOfTablePartArray(); i++) {
+ if
(toDelete.getKey().equals(tblParts.getTablePartArray(i).getId())) {
+ matchedPos = i;
+ break;
+ }
+ }
+ if (matchedPos != -1) {
+ tblParts.removeTablePart(matchedPos);
}
}
}
Modified:
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFTable.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFTable.java?rev=1903395&r1=1903394&r2=1903395&view=diff
==============================================================================
---
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFTable.java
(original)
+++
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFTable.java
Sat Aug 13 16:11:03 2022
@@ -45,6 +45,7 @@ import org.junit.jupiter.api.Test;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTable;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTableColumn;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTableStyleInfo;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
public final class TestXSSFTable {
@@ -726,4 +727,15 @@ public final class TestXSSFTable {
assertEquals(cols.get(4).getName(), updatedCols.get(4).getName());
}
}
+
+ @Test
+ void bug66212() throws IOException {
+ try (XSSFWorkbook wb =
XSSFTestDataSamples.openSampleWorkbook("table-sample.xlsx")) {
+ XSSFTable table = wb.getTable("Tabelle1");
+ XSSFSheet sheet = table.getXSSFSheet();
+ assertEquals(1,
sheet.getCTWorksheet().getTableParts().sizeOfTablePartArray());
+ sheet.removeTable(table);
+ assertEquals(0,
sheet.getCTWorksheet().getTableParts().sizeOfTablePartArray());
+ }
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]