Index: src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java (revision 1862373) +++ src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java (date 1561990784686) @@ -4181,6 +4181,16 @@ removeRelation(getRelationById(toDelete.getKey()), true); tables.remove(toDelete.getKey()); toDelete.getValue().onTableDelete(); + + CTTableParts tblParts = worksheet.getTableParts(); + final CTTablePart[] tablePartArray = tblParts.getTablePartArray(); + for(int i = 0; i < tablePartArray.length; i++) { + if(tablePartArray[i].getId().equals(toDelete.getKey())) { + tblParts.removeTablePart(i); + //worksheet.setTableParts(tblParts); + break; + } + } } } Index: src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFTable.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFTable.java (revision 1862373) +++ src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFTable.java (date 1561990784666) @@ -34,6 +34,7 @@ import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; +import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import java.util.Locale; @@ -622,4 +623,33 @@ final AreaReference area = new AreaReference(upperLeft, lowerRight, SpreadsheetVersion.EXCEL2007); return sheet.createTable(area); } + + /** + * Delete table2, and create a named range in sheet0; it should automatically be assigned the name "Table4" + */ + @Test + public void testRemoveTable() throws IOException { + final File resultDir=new File("build/custom-reports-test"); + + XSSFWorkbook workbook = new XSSFWorkbook(); + XSSFSheet sheet0 = workbook.createSheet(); + + final String procName="testTable"; + String fileName=procName+".xlsx"; + + // Create the table + final XSSFTable table1=addTable(sheet0,3,0,2,4); + final XSSFTable table2=addTable(sheet0,7,1,3,5); + sheet0.removeTable(table1); + + final File file=new File(resultDir,fileName); + try (OutputStream fileOut = new FileOutputStream(file)) { + workbook.write(fileOut); + System.out.println(String.format(Locale.ROOT, "%s: test file written to %s",procName,file.getAbsolutePath())); + } catch (Exception e) { + System.err.println(e.getMessage()); + } finally { + workbook.close(); + } + } }