diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index a837169ed..0e77fa1bd 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ + 49895 - avoid corruption of XSSFWorkbook after removing all merged cells from sheet 49907 - fixed inconsistent behaviour between HSSF and XSSF when creating consecutive names Add getMimeType() method to HWPF Picture, alongside existing file extension Add code for reading Ole10Native data diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java index d33bea8f9..ce870cfcf 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java @@ -1350,7 +1350,11 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { mergeCellsArray[i - 1] = ctMergeCells.getMergeCellArray(i); } } - ctMergeCells.setMergeCellArray(mergeCellsArray); + if(mergeCellsArray.length > 0){ + ctMergeCells.setMergeCellArray(mergeCellsArray); + } else{ + worksheet.unsetMergeCells(); + } } /** diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java index 7eec1794a..f38d773e6 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java @@ -253,6 +253,8 @@ public final class TestXSSFSheet extends BaseTestSheet { sheet.removeMergedRegion(1); sheet.removeMergedRegion(0); assertEquals(0, sheet.getNumMergedRegions()); + assertNull(" CTMergeCells should be deleted after removing the last merged " + + "region on the sheet.", sheet.getCTWorksheet().getMergeCells()); } public void testSetDefaultColumnStyle() {