You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by sl...@apache.org on 2006/01/21 17:36:29 UTC

svn commit: r371080 - in /jakarta/poi/trunk/src: java/org/apache/poi/hssf/model/ java/org/apache/poi/hssf/record/aggregates/ java/org/apache/poi/hssf/usermodel/ testcases/org/apache/poi/hssf/usermodel/

Author: slaubach
Date: Sat Jan 21 08:36:18 2006
New Revision: 371080

URL: http://svn.apache.org/viewcvs?rev=371080&view=rev
Log:
Added the ability to set the default style for an individual column in a sheet.

Modified:
    jakarta/poi/trunk/src/java/org/apache/poi/hssf/model/Sheet.java
    jakarta/poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/ColumnInfoRecordsAggregate.java
    jakarta/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java
    jakarta/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java

Modified: jakarta/poi/trunk/src/java/org/apache/poi/hssf/model/Sheet.java
URL: http://svn.apache.org/viewcvs/jakarta/poi/trunk/src/java/org/apache/poi/hssf/model/Sheet.java?rev=371080&r1=371079&r2=371080&view=diff
==============================================================================
--- jakarta/poi/trunk/src/java/org/apache/poi/hssf/model/Sheet.java (original)
+++ jakarta/poi/trunk/src/java/org/apache/poi/hssf/model/Sheet.java Sat Jan 21 08:36:18 2006
@@ -44,7 +44,7 @@
  * <P>
  * @author  Andrew C. Oliver (acoliver at apache dot org)
  * @author  Glen Stampoultzis (glens at apache.org)
- * @author  Shawn Laubach (slaubach at apache dot org) Gridlines, Headers, Footers, and PrintSetup
+ * @author  Shawn Laubach (slaubach at apache dot org) Gridlines, Headers, Footers, PrintSetup, and Setting Default Column Styles
  * @author Jason Height (jheight at chariot dot net dot au) Clone support. DBCell & Index Record writing support
  * @author  Brian Sanders (kestrel at burdell dot org) Active Cell support
  *
@@ -1848,8 +1848,17 @@
         if (columns == null)
             columns = new ColumnInfoRecordsAggregate();
 
-        columns.setColumn( column, width, level, hidden, collapsed );
+        columns.setColumn( column, null, width, level, hidden, collapsed );
     }
+
+    public void setColumn(short column, Short xfStyle, Short width, Integer level, Boolean hidden, Boolean collapsed)
+    {
+        if (columns == null)
+            columns = new ColumnInfoRecordsAggregate();
+
+        columns.setColumn( column, xfStyle, width, level, hidden, collapsed );
+    }
+
 
     /**
      * Creates an outline group for the specified columns.

Modified: jakarta/poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/ColumnInfoRecordsAggregate.java
URL: http://svn.apache.org/viewcvs/jakarta/poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/ColumnInfoRecordsAggregate.java?rev=371080&r1=371079&r2=371080&view=diff
==============================================================================
--- jakarta/poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/ColumnInfoRecordsAggregate.java (original)
+++ jakarta/poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/ColumnInfoRecordsAggregate.java Sat Jan 21 08:36:18 2006
@@ -269,7 +269,7 @@
         columnInfo = writeHidden( columnInfo, idx, true );
 
         // Write collapse field
-        setColumn( (short) ( columnInfo.getLastColumn() + 1 ), null, null, null, Boolean.TRUE);
+        setColumn( (short) ( columnInfo.getLastColumn() + 1 ), null, null, null, null, Boolean.TRUE);
     }
 
     public void expandColumn( short columnNumber )
@@ -307,7 +307,7 @@
         }
 
         // Write collapse field
-        setColumn( (short) ( columnInfo.getLastColumn() + 1 ), null, null, null, Boolean.FALSE);
+        setColumn( (short) ( columnInfo.getLastColumn() + 1 ), null, null, null, null, Boolean.FALSE);
     }
 
     /**
@@ -327,7 +327,7 @@
     }
 
 
-    public void setColumn(short column, Short width, Integer level, Boolean hidden, Boolean collapsed)
+    public void setColumn(short column, Short xfIndex, Short width, Integer level, Boolean hidden, Boolean collapsed)
     {
         ColumnInfoRecord ci = null;
         int              k  = 0;
@@ -345,11 +345,12 @@
 
         if (ci != null)
         {
+	    boolean styleChanged = xfIndex != null && ci.getXFIndex() != xfIndex.shortValue();
             boolean widthChanged = width != null && ci.getColumnWidth() != width.shortValue();
             boolean levelChanged = level != null && ci.getOutlineLevel() != level.intValue();
             boolean hiddenChanged = hidden != null && ci.getHidden() != hidden.booleanValue();
             boolean collapsedChanged = collapsed != null && ci.getCollapsed() != collapsed.booleanValue();
-            boolean columnChanged = widthChanged || levelChanged || hiddenChanged || collapsedChanged;
+            boolean columnChanged = styleChanged || widthChanged || levelChanged || hiddenChanged || collapsedChanged;
             if (!columnChanged)
             {
                 // do nothing...nothing changed.
@@ -357,7 +358,7 @@
             else if ((ci.getFirstColumn() == column)
                      && (ci.getLastColumn() == column))
             {                               // if its only for this cell then
-                setColumnInfoFields( ci, width, level, hidden, collapsed );
+                setColumnInfoFields( ci, xfIndex, width, level, hidden, collapsed );
             }
             else if ((ci.getFirstColumn() == column)
                      || (ci.getLastColumn() == column))
@@ -378,7 +379,7 @@
                 nci.setLastColumn(column);
                 nci.setOptions(ci.getOptions());
                 nci.setXFIndex(ci.getXFIndex());
-                setColumnInfoFields( nci, width, level, hidden, collapsed );
+                setColumnInfoFields( nci, xfIndex, width, level, hidden, collapsed );
 
                 insertColumn(k, nci);
             }
@@ -393,7 +394,7 @@
                 nci.setLastColumn(column);
                 nci.setOptions(ci.getOptions());
                 nci.setXFIndex(ci.getXFIndex());
-                setColumnInfoFields( nci, width, level, hidden, collapsed );
+                setColumnInfoFields( nci, xfIndex, width, level, hidden, collapsed );
                 insertColumn(++k, nci);
 
                 nci = ( ColumnInfoRecord ) createColInfo();
@@ -413,7 +414,7 @@
 
             nci.setFirstColumn(column);
             nci.setLastColumn(column);
-            setColumnInfoFields( nci, width, level, hidden, collapsed );
+            setColumnInfoFields( nci, xfIndex, width, level, hidden, collapsed );
             insertColumn(k, nci);
         }
     }
@@ -421,8 +422,10 @@
     /**
      * Sets all non null fields into the <code>ci</code> parameter.
      */
-    private void setColumnInfoFields( ColumnInfoRecord ci, Short width, Integer level, Boolean hidden, Boolean collapsed )
+    private void setColumnInfoFields( ColumnInfoRecord ci, Short xfStyle, Short width, Integer level, Boolean hidden, Boolean collapsed )
     {
+	if (xfStyle != null)
+	    ci.setXFIndex(xfStyle.shortValue());
         if (width != null)
             ci.setColumnWidth(width.shortValue());
         if (level != null)
@@ -500,7 +503,7 @@
                 level = Math.min(7, level);
                 fromIdx = columnIdx - 1; // subtract 1 just in case this column is collapsed later.
             }
-            setColumn((short)i, null, new Integer(level), null, null);
+            setColumn((short)i, null, null, new Integer(level), null, null);
             columnIdx = findColumnIdx( i, Math.max(0, fromIdx ) );
             collapseColInfoRecords( columnIdx );
         }

Modified: jakarta/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java
URL: http://svn.apache.org/viewcvs/jakarta/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java?rev=371080&r1=371079&r2=371080&view=diff
==============================================================================
--- jakarta/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java (original)
+++ jakarta/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java Sat Jan 21 08:36:18 2006
@@ -1331,5 +1331,13 @@
         sheet.setRowGroupCollapsed( row, collapse );
     }
 
-
+    /**
+     * Sets the default column style for a given column.  POI will only apply this style to new cells added to the sheet.
+     *
+     * @param fromCol the starting column index
+     * @param column the column index
+     */
+    public void setDefaultColumnStyle(short column, HSSFCellStyle style) {
+	sheet.setColumn(column, new Short(style.getIndex()), null, null, null, null);
+    }
 }

Modified: jakarta/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java
URL: http://svn.apache.org/viewcvs/jakarta/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java?rev=371080&r1=371079&r2=371080&view=diff
==============================================================================
--- jakarta/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java (original)
+++ jakarta/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java Sat Jan 21 08:36:18 2006
@@ -469,6 +469,17 @@
    	assertNotNull(r.getCell((short)1)); 
    	assertEquals("formula", r.getCell((short)1).getCellFormula(), "A1*2");
    }
+
+    /** test that new default column styles get applied */
+    public void testDefaultColumnStyle() {
+	HSSFWorkbook wb = new HSSFWorkbook();
+	HSSFCellStyle style = wb.createCellStyle();
+	HSSFSheet s = wb.createSheet();
+	s.setDefaultColumnStyle((short)0, style);
+	HSSFRow r = s.createRow(0);
+	HSSFCell c = r.createCell((short)0);
+	assertEquals("style should match", style.getIndex(), c.getCellStyle().getIndex());
+    }
 	 
 	 
 	public static void main(java.lang.String[] args) {



---------------------------------------------------------------------
To unsubscribe, e-mail: poi-dev-unsubscribe@jakarta.apache.org
Mailing List:    http://jakarta.apache.org/site/mail2.html#poi
The Apache Jakarta POI Project: http://jakarta.apache.org/poi/