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 c2f379fa8..f494c6712 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java @@ -2689,14 +2689,15 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { } protected void write(OutputStream out) throws IOException { - if(worksheet.sizeOfColsArray() == 1) { - CTCols col = worksheet.getColsArray(0); - if(col.sizeOfColArray() != 0) { + CTCols col = worksheet.getColsArray(0); + if(col.sizeOfColArray() == 0) { + // this is necessary so that we do not write an empty item into the sheet-xml in the xlsx-file + // Excel complains about a corrupted file if this shows up there! + worksheet.setColsArray(null); + } else { setColWidthAttribute(col); - } /*else { - remove, see Bug 52233: worksheet.setColsArray(null); - }*/ + } } // Now re-generate our CTHyperlinks, if needed diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java index 5bb875691..8f583efbc 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java @@ -462,7 +462,8 @@ public final class TestXSSFWorkbook extends BaseTestWorkbook { sh.getCTWorksheet().getSheetPr().getTabColor().getIndexed()); } - public void testColumnWidthPOI52233() throws Exception { + // TODO: disabled as the fix for this had severe side-effects + public void doNotRuntestColumnWidthPOI52233() throws Exception { XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet sheet = workbook.createSheet(); XSSFRow row = sheet.createRow(0);