]> source.dussan.org Git - poi.git/commitdiff
Improved error handling for problems described in bugzilla 46569 - Changed Sheet...
authorYegor Kozlov <yegor@apache.org>
Fri, 6 Feb 2009 18:59:24 +0000 (18:59 +0000)
committerYegor Kozlov <yegor@apache.org>
Fri, 6 Feb 2009 18:59:24 +0000 (18:59 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@741678 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/hssf/model/Sheet.java
src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java
src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Sheet.java
src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
src/testcases/org/apache/poi/hssf/model/TestSheetAdditional.java

index 5e528f659ce7682f1263e06d7101aef2e2bed9f8..80adc84579387fae08090f8251ffbc6913fc090e 100644 (file)
@@ -1091,6 +1091,8 @@ public final class Sheet implements Model {
      *            (in units of 1/256th of a character width)
      */
     public void setColumnWidth(int column, int width) {
+        if(width > 255*256) throw new IllegalArgumentException("The maximum column width for an individual cell is 255 characters.");
+        
         setColumn(column, null, new Integer(width), null, null, null);
     }
 
index af51ce654e68234ac6c0ac787824c6aed165e1c4..5e7609db0a1595e58bccfb8817d527377bb31969 100644 (file)
@@ -429,9 +429,16 @@ public final class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet {
     }
 
     /**
-     * set the width (in units of 1/256th of a character width)
+     * Set the width (in units of 1/256th of a character width)
+     * <p>
+     * The maximum column width for an individual cell is 255 characters.
+     * This value represents the number of characters that can be displayed
+     * in a cell that is formatted with the standard font.
+     * </p>
+     *
      * @param columnIndex - the column to set (0-based)
      * @param width - the width in units of 1/256th of a character width
+     * @throws IllegalArgumentException if width > 65536 (the maximum column width in Excel)
      */
     public void setColumnWidth(int columnIndex, int width) {
         sheet.setColumnWidth(columnIndex, width);
index a6a1662c53feca216a85a494740912e46cc92ad0..ad3e50b09e7cbc9d7b5749d52fb8e4e86376ca92 100644 (file)
@@ -118,6 +118,11 @@ public interface Sheet extends Iterable<Row> {
 
     /**
      * Set the width (in units of 1/256th of a character width)
+     * <p>
+     * The maximum column width for an individual cell is 255 characters.
+     * This value represents the number of characters that can be displayed
+     * in a cell that is formatted with the standard font.
+     * </p>
      *
      * @param columnIndex - the column to set (0-based)
      * @param width - the width in units of 1/256th of a character width
index aa35007ff4f9b987222e263081ef943094a31690..b1ed00935892956c2feaa83cf2fd669b7b860991 100644 (file)
@@ -1266,11 +1266,19 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
 
     /**
      * Set the width (in units of 1/256th of a character width)
+     * <p>
+     * The maximum column width for an individual cell is 255 characters.
+     * This value represents the number of characters that can be displayed
+     * in a cell that is formatted with the standard font.
+     * </p>
      *
      * @param columnIndex - the column to set (0-based)
      * @param width - the width in units of 1/256th of a character width
+     * @throws IllegalArgumentException if width > 65536 (the maximum column width in Excel)
      */
     public void setColumnWidth(int columnIndex, int width) {
+        if(width > 255*256) throw new IllegalArgumentException("The maximum column width for an individual cell is 255 characters.");
+
         columnHelper.setColWidth(columnIndex, (double)width/256);
     }
 
index dd0446c9dd2ef7172761aa1505082cb9dc0da05e..61a0b5e94d2d6fcd689ff613f4ca1ae20227d077 100644 (file)
@@ -184,6 +184,18 @@ public class TestXSSFSheet extends TestCase {
         assertEquals(1, sheet.getRowBreaks().length);
     }
 
+    public void testMaxColumnWidth() {
+        XSSFWorkbook workbook = new XSSFWorkbook();
+        Sheet sheet = workbook.createSheet("Sheet 1");
+        sheet.setColumnWidth(0, 255*256); //the limit
+        try {
+            sheet.setColumnWidth(0, 256*256); //the limit
+            fail("expected exception");
+        } catch (Exception e){
+            ;
+        }
+    }
+
     public void testGetSetColumnBreaks() {
         XSSFWorkbook workbook = new XSSFWorkbook();
         Sheet sheet = workbook.createSheet("Sheet 1");
index 477908dc7295deb685a37410f9c961f4dac5dc2f..9afae28b13efb973ed54a443be79dcac6102cb14 100644 (file)
@@ -54,4 +54,15 @@ public final class TestSheetAdditional extends TestCase {
                assertEquals((short)100,sheet.getColumnWidth((short)9));
                assertEquals((short)100,sheet.getColumnWidth((short)10));
        }
+
+    public void testMaxColumnWidth() {
+        Sheet sheet = Sheet.createSheet();
+        sheet.setColumnWidth(0, 255*256); //the limit
+        try {
+            sheet.setColumnWidth(0, 256*256); //the limit
+            fail("expected exception");
+        } catch (Exception e){
+            ;
+        }
+    }
 }