From: Yegor Kozlov Date: Sat, 11 Sep 2010 13:48:00 +0000 (+0000) Subject: avoid corruption of XSSFWorkbook after removing all merged cells from sheet, see... X-Git-Tag: REL_3_7_BETA3~32 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=0a97b41c1d5c28620089a08040c4bf86ab7fb655;p=poi.git avoid corruption of XSSFWorkbook after removing all merged cells from sheet, see Bugzilla 49895 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@996148 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index a837169ed3..0e77fa1bd8 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 d33bea8f90..ce870cfcf6 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 7eec1794ab..f38d773e6a 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() {