diff --git a/src/examples/src/org/apache/poi/hssf/usermodel/examples/FrillsAndFills.java b/src/examples/src/org/apache/poi/hssf/usermodel/examples/FrillsAndFills.java new file mode 100644 index 0000000000..6cf7857b44 --- /dev/null +++ b/src/examples/src/org/apache/poi/hssf/usermodel/examples/FrillsAndFills.java @@ -0,0 +1,100 @@ +/* ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + */ + +package org.apache.poi.hssf.usermodel.examples; + +import org.apache.poi.hssf.usermodel.*; +import org.apache.poi.hssf.util.HSSFColor; + +import java.io.FileOutputStream; +import java.io.IOException; + +/** + * Shows how to use various fills. + * + * @author Glen Stampoultzis (glens at apache.org) + */ +public class FrillsAndFills +{ + public static void main(String[] args) + throws IOException + { + HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet sheet = wb.createSheet("new sheet"); + + // Create a row and put some cells in it. Rows are 0 based. + HSSFRow row = sheet.createRow((short) 1); + + // Aqua background + HSSFCellStyle style = wb.createCellStyle(); + style.setFillBackgroundColor(HSSFColor.AQUA.index); + style.setFillPattern(HSSFCellStyle.BIG_SPOTS); + HSSFCell cell = row.createCell((short) 1); + cell.setCellValue("X"); + cell.setCellStyle(style); + + // Orange "foreground", foreground being the fill foreground not the font color. + style = wb.createCellStyle(); + style.setFillForegroundColor(HSSFColor.ORANGE.index); + style.setFillPattern(HSSFCellStyle.SOLID_FILL); + cell = row.createCell((short) 2); + cell.setCellValue("X"); + cell.setCellStyle(style); + + // Write the output to a file + FileOutputStream fileOut = new FileOutputStream("workbook.xls"); + wb.write(fileOut); + fileOut.close(); + } +} diff --git a/src/java/org/apache/poi/hssf/record/ExtendedFormatRecord.java b/src/java/org/apache/poi/hssf/record/ExtendedFormatRecord.java index 6a586dcda4..b9042ab065 100644 --- a/src/java/org/apache/poi/hssf/record/ExtendedFormatRecord.java +++ b/src/java/org/apache/poi/hssf/record/ExtendedFormatRecord.java @@ -80,7 +80,7 @@ public class ExtendedFormatRecord public final static short sid = 0xE0; // null constant - public final static short NULL = 0xfffffff0; + public final static short NULL = (short)0xfff0; // xf type public final static short XF_STYLE = 1; @@ -117,6 +117,25 @@ public class ExtendedFormatRecord public final static short VERTICAL_BOTTOM = 0x2; public final static short VERTICAL_JUSTIFY = 0x3; + // fill + public final static short NO_FILL = 0 ; + public final static short SOLID_FILL = 1 ; + public final static short FINE_DOTS = 2 ; + public final static short ALT_BARS = 3 ; + public final static short SPARSE_DOTS = 4 ; + public final static short THICK_HORZ_BANDS = 5 ; + public final static short THICK_VERT_BANDS = 6 ; + public final static short THICK_BACKWARD_DIAG = 7 ; + public final static short THICK_FORWARD_DIAG = 8 ; + public final static short BIG_SPOTS = 9 ; + public final static short BRICKS = 10 ; + public final static short THIN_HORZ_BANDS = 11 ; + public final static short THIN_VERT_BANDS = 12 ; + public final static short THIN_BACKWARD_DIAG = 13 ; + public final static short THIN_FORWARD_DIAG = 14 ; + public final static short SQUARES = 15 ; + public final static short DIAMONDS = 16 ; + // fields in BOTH style and Cell XF records private short field_1_font_index; // not bit-mapped private short field_2_format_index; // not bit-mapped @@ -374,7 +393,7 @@ public class ExtendedFormatRecord * for cell XF types this is the parent style (usually 0/normal). For * style this should be NULL. * - * @param index of parent XF + * @param parent index of parent XF * @see #NULL * @see #setCellOptions(short) */ @@ -439,7 +458,7 @@ public class ExtendedFormatRecord * set the vertical alignment of text in the cell * * - * @param where to align the text + * @param align where to align the text * @see #VERTICAL_TOP * @see #VERTICAL_CENTER * @see #VERTICAL_BOTTOM @@ -938,8 +957,25 @@ public class ExtendedFormatRecord } /** - * set the fill pattern - ??? + * set the fill pattern * + * @see #NO_FILL + * @see #SOLID_FILL + * @see #FINE_DOTS + * @see #ALT_BARS + * @see #SPARSE_DOTS + * @see #THICK_HORZ_BANDS + * @see #THICK_VERT_BANDS + * @see #THICK_BACKWARD_DIAG + * @see #THICK_FORWARD_DIAG + * @see #BIG_SPOTS + * @see #BRICKS + * @see #THIN_HORZ_BANDS + * @see #THIN_VERT_BANDS + * @see #THIN_BACKWARD_DIAG + * @see #THIN_FORWARD_DIAG + * @see #SQUARES + * @see #DIAMONDS * * @param fill - fill pattern?? * @see #setAdtlPaletteOptions(short) @@ -1633,8 +1669,25 @@ public class ExtendedFormatRecord } /** - * get the additional fill pattern - ??? + * get the additional fill pattern * + * @see #NO_FILL + * @see #SOLID_FILL + * @see #FINE_DOTS + * @see #ALT_BARS + * @see #SPARSE_DOTS + * @see #THICK_HORZ_BANDS + * @see #THICK_VERT_BANDS + * @see #THICK_BACKWARD_DIAG + * @see #THICK_FORWARD_DIAG + * @see #BIG_SPOTS + * @see #BRICKS + * @see #THIN_HORZ_BANDS + * @see #THIN_VERT_BANDS + * @see #THIN_BACKWARD_DIAG + * @see #THIN_FORWARD_DIAG + * @see #SQUARES + * @see #DIAMONDS * * @return fill - fill pattern?? * @see #getAdtlPaletteOptions() @@ -1680,8 +1733,7 @@ public class ExtendedFormatRecord /** * get the background palette color index * - * - * @param color - palette index + * @retyrb color palette index * @see #getFillPaletteOptions() */ diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFCellStyle.java b/src/java/org/apache/poi/hssf/usermodel/HSSFCellStyle.java index 0e2311475e..39ecf2ef96 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFCellStyle.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFCellStyle.java @@ -230,6 +230,42 @@ public class HSSFCellStyle public final static short BORDER_SLANTED_DASH_DOT = 0xD; + /** No background */ + public final static short NO_FILL = 0 ; + /** Solidly filled */ + public final static short SOLID_FILL = 1 ; + /** Small fine dots */ + public final static short FINE_DOTS = 2 ; + /** Wide dots */ + public final static short ALT_BARS = 3 ; + /** Sparse dots */ + public final static short SPARSE_DOTS = 4 ; + /** Thick horizontal bands */ + public final static short THICK_HORZ_BANDS = 5 ; + /** Thick vertical bands */ + public final static short THICK_VERT_BANDS = 6 ; + /** Thick backward facing diagonals */ + public final static short THICK_BACKWARD_DIAG = 7 ; + /** Thick forward facing diagonals */ + public final static short THICK_FORWARD_DIAG = 8 ; + /** Large spots */ + public final static short BIG_SPOTS = 9 ; + /** Brick-like layout */ + public final static short BRICKS = 10 ; + /** Thin horizontal bands */ + public final static short THIN_HORZ_BANDS = 11 ; + /** Thin vertical bands */ + public final static short THIN_VERT_BANDS = 12 ; + /** Thin backward diagonal */ + public final static short THIN_BACKWARD_DIAG = 13 ; + /** Thin forward diagonal */ + public final static short THIN_FORWARD_DIAG = 14 ; + /** Squares */ + public final static short SQUARES = 15 ; + /** Diamonds */ + public final static short DIAMONDS = 16 ; + + /** Creates new HSSFCellStyle why would you want to do this?? */ protected HSSFCellStyle(short index, ExtendedFormatRecord rec) @@ -755,9 +791,27 @@ public class HSSFCellStyle /** * setting to one fills the cell with the foreground color... No idea about * other values - * @param fp fill pattern (set to 1 to fill w/foreground color + * + * @see #NO_FILL + * @see #SOLID_FILL + * @see #FINE_DOTS + * @see #ALT_BARS + * @see #SPARSE_DOTS + * @see #THICK_HORZ_BANDS + * @see #THICK_VERT_BANDS + * @see #THICK_BACKWARD_DIAG + * @see #THICK_FORWARD_DIAG + * @see #BIG_SPOTS + * @see #BRICKS + * @see #THIN_HORZ_BANDS + * @see #THIN_VERT_BANDS + * @see #THIN_BACKWARD_DIAG + * @see #THIN_FORWARD_DIAG + * @see #SQUARES + * @see #DIAMONDS + * + * @param fp fill pattern (set to 1 to fill w/foreground color) */ - public void setFillPattern(short fp) { format.setAdtlFillPattern(fp); @@ -774,7 +828,15 @@ public class HSSFCellStyle } /** - * set the background fill color + * set the background fill color. + *

+ * For example: + *

+     * cs.setFillPattern( (short) 1 );
+     * cs.setFillBackgroundColor(HSSFColor.RED.index);
+     * 
+ * You will need to set the fill style first. + * * @param bg color */