]> source.dussan.org Git - poi.git/commitdiff
Bug 50681 - Fixed autosizing columns beyond 255 character limit
authorYegor Kozlov <yegor@apache.org>
Thu, 16 Jun 2011 08:57:55 +0000 (08:57 +0000)
committerYegor Kozlov <yegor@apache.org>
Thu, 16 Jun 2011 08:57:55 +0000 (08:57 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1136330 13f79535-47bb-0310-9956-ffa450edef68

src/documentation/content/xdocs/status.xml
src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java
src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java

index 889139d1d7cb37bbf032fce3332a62e03df0f111..c54e3d0db8e7e3549cc8536c4d8bd7ff7d8f4a69 100644 (file)
@@ -34,6 +34,7 @@
 
     <changes>
         <release version="3.8-beta4" date="2011-??-??">
+           <action dev="poi-developers" type="add">50681 - Fixed autosizing columns beyond 255 character limit </action>
            <action dev="poi-developers" type="add">51374 - Fixed incorrect setting of lastPrinted OOXML core property </action>
            <action dev="poi-developers" type="add">51351 - Word to XSL-FO converter</action>
            <action dev="poi-developers" type="add">50458 - Fixed missing shapeId in XSSF drawings </action>
index 679bfdd8dbab00e415e54135df83a42fb5056e5a..e9bd4cf4d5176d44799038b76bea418d679aff0f 100644 (file)
@@ -1764,7 +1764,16 @@ public final class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet {
      */
     public void autoSizeColumn(int column, boolean useMergedCells) {
         double width = SheetUtil.getColumnWidth(this, column, useMergedCells);
-        if(width != -1) setColumnWidth(column, (int) (256*width));
+
+        if (width != -1) {
+            width *= 256;
+            int maxColumnWidth = 255*256; // The maximum column width for an individual cell is 255 characters
+            if (width > maxColumnWidth) {
+                width = maxColumnWidth;
+            }
+            setColumnWidth(column, (int)(width));
+        }
+
     }
 
     /**
index 244a9e063f9d20d785d7f83033745a3c458ea04b..204b4492fb65f3a944315e0e63141591e55afe7b 100644 (file)
@@ -381,10 +381,15 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
      */
     public void autoSizeColumn(int column, boolean useMergedCells) {
         double width = SheetUtil.getColumnWidth(this, column, useMergedCells);
-        if(width != -1){
+
+        if (width != -1) {
+            width *= 256;
+            int maxColumnWidth = 255*256; // The maximum column width for an individual cell is 255 characters
+            if (width > maxColumnWidth) {
+                width = maxColumnWidth;
+            }
+            setColumnWidth(column, (int)(width));
             columnHelper.setColBestFit(column, true);
-            columnHelper.setCustomWidth(column, true);
-            columnHelper.setColWidth(column, width);
         }
     }
 
index 5636f918e3c0d579b5c34d689ea5db82f2733932..a6ee295374bf012b71f5366fe1aa3fa037e5cd36 100644 (file)
@@ -306,4 +306,24 @@ public abstract class BaseTestBugzillaIssues extends TestCase {
         fmla.append(")");
         return fmla.toString();
     }
+
+    public final void testAutoSize_bug506819() {
+        Workbook wb = _testDataProvider.createWorkbook();
+        Sheet sheet = wb.createSheet("Sheet1");
+        Row row = sheet.createRow(0);
+        Cell cell0 = row.createCell(0);
+
+        String longValue = "www.hostname.com, www.hostname.com, " +
+                "www.hostname.com, www.hostname.com, www.hostname.com, " +
+                "www.hostname.com, www.hostname.com, www.hostname.com, " +
+                "www.hostname.com, www.hostname.com, www.hostname.com, " +
+                "www.hostname.com, www.hostname.com, www.hostname.com, " +
+                "www.hostname.com, www.hostname.com, www.hostname.com, www.hostname.com";
+
+        cell0.setCellValue(longValue);
+
+        sheet.autoSizeColumn(0);
+        assertEquals(255*256, sheet.getColumnWidth(0)); // maximum column width is 255 characters
+        sheet.setColumnWidth(0, sheet.getColumnWidth(0)); // Bug 506819 reports exception at this point
+    }
 }