Apache POI – セルの前景色(背景色)を設定するには


セルの前景色(背景色)を設定するには、HSSFCellStyleクラスのsetFillForegroundColorメソッドを使用します。

package net.tk_factory.sample.apache.poi.cell;

import java.io.FileOutputStream;
import java.io.IOException;
import net.tk_factory.sample.AbstractSample;
import org.apache.log4j.Logger;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;

/**
 * Apache POI-HSSFを使用したサンプルプログラムです。<br/>
 * <br/>
 * <b>内容</b>
 * <ol type="1">
 * <li>セルの前景色(背景色)を設定します。</li>
 * </ol>
 * @author Takafumi Kondo (TK Factory)
 */
public class SampleSetFillForegroundColor extends AbstractSample
{
    /** クラス名 */
    private static final String CLASS_NAME =
        SampleSetFillForegroundColor.class.getSimpleName();

    /** ロガー */
    private static final Logger LOGGER =
        Logger.getLogger(SampleSetFillForegroundColor.class.getName());

    /** 出力ファイル名 */
    private static final String OUT_FILE_NAME =
        SAMPLE_FILE_DIRECTORY + CLASS_NAME + "Out.xls";

    /**
     * SampleSetFillForegroundColorオブジェクトを構築すると、
     * UnsupportedOperationExceptionがスローされます。<br/>
     */
    protected SampleSetFillForegroundColor()
    {
        throw new UnsupportedOperationException();
    }

    /**
     * mainメソッドです。<br/>
     *
     * @param args 引数
     */
    public static void main(String[] args)
    {
        LOGGER.info("[START]" + CLASS_NAME);

        FileOutputStream out = null;

        try
        {
            //すでに出力ファイルが存在している場合は削除する
            deleteExistsFile(OUT_FILE_NAME);

            //ワークブックを生成する
            HSSFWorkbook workbook = new HSSFWorkbook();

            //シートを追加する
            HSSFSheet sheet = workbook.createSheet();

            //行を追加する
            HSSFRow[] rows = new HSSFRow[47];
            for (int i = 0; i < rows.length; i++)
            {
                rows[i] = sheet.createRow(i);
            }

            //AQUA
            createCell(workbook, rows[0], 0,
                    "AQUA",
                    HSSFColor.AQUA.index);
            //BLACK
            createCell(workbook, rows[1], 1,
                    "BLACK",
                    HSSFColor.BLACK.index);
            //BLUE
            createCell(workbook, rows[2], 2,
                    "BLUE",
                    HSSFColor.BLUE.index);
            //BLUE_GREY
            createCell(workbook, rows[3], 3,
                    "BLUE_GREY",
                    HSSFColor.BLUE_GREY.index);
            //BRIGHT_GREEN
            createCell(workbook, rows[4], 4,
                    "BRIGHT_GREEN",
                    HSSFColor.BRIGHT_GREEN.index);
            //BROWN
            createCell(workbook, rows[5], 0,
                    "BROWN",
                    HSSFColor.BROWN.index);
            //CORAL
            createCell(workbook, rows[6], 1,
                    "CORAL",
                    HSSFColor.CORAL.index);
            //CORNFLOWER_BLUE
            createCell(workbook, rows[7], 2,
                    "CORNFLOWER_BLUE",
                    HSSFColor.CORNFLOWER_BLUE.index);
            //DARK_BLUE
            createCell(workbook, rows[8], 3,
                    "DARK_BLUE",
                    HSSFColor.DARK_BLUE.index);
            //DARK_GREEN
            createCell(workbook, rows[9], 4,
                    "DARK_GREEN",
                    HSSFColor.DARK_GREEN.index);
            //DARK_RED
            createCell(workbook, rows[10], 0,
                    "DARK_RED",
                    HSSFColor.DARK_RED.index);
            //DARK_TEAL
            createCell(workbook, rows[11], 1,
                    "DARK_TEAL",
                    HSSFColor.DARK_TEAL.index);
            //DARK_YELLOW
            createCell(workbook, rows[12], 2,
                    "DARK_YELLOW",
                    HSSFColor.DARK_YELLOW.index);
            //GOLD
            createCell(workbook, rows[13], 3,
                    "GOLD",
                    HSSFColor.GOLD.index);
            //GREEN
            createCell(workbook, rows[14], 4,
                    "GREEN",
                    HSSFColor.GREEN.index);
            //GREY_25_PERCENT
            createCell(workbook, rows[15], 0,
                    "GREY_25_PERCENT",
                    HSSFColor.GREY_25_PERCENT.index);
            //GREY_40_PERCENT
            createCell(workbook, rows[16], 1,
                    "GREY_40_PERCENT",
                    HSSFColor.GREY_40_PERCENT.index);
            //GREY_50_PERCENT
            createCell(workbook, rows[17], 2,
                    "GREY_50_PERCENT",
                    HSSFColor.GREY_50_PERCENT.index);
            //GREY_80_PERCENT
            createCell(workbook, rows[18], 3,
                    "GREY_80_PERCENT",
                    HSSFColor.GREY_80_PERCENT.index);
            //INDIGO
            createCell(workbook, rows[19], 4,
                    "INDIGO",
                    HSSFColor.INDIGO.index);
            //LAVENDER
            createCell(workbook, rows[20], 0,
                    "LAVENDER",
                    HSSFColor.LAVENDER.index);
            //LEMON_CHIFFON
            createCell(workbook, rows[21], 1,
                    "LEMON_CHIFFON",
                    HSSFColor.LEMON_CHIFFON.index);
            //LIGHT_BLUE
            createCell(workbook, rows[22], 2,
                    "LIGHT_BLUE",
                    HSSFColor.LIGHT_BLUE.index);
            //LIGHT_CORNFLOWER_BLUE
            createCell(workbook, rows[23], 3,
                    "LIGHT_CORNFLOWER_BLUE",
                    HSSFColor.LIGHT_CORNFLOWER_BLUE.index);
            //LIGHT_GREEN
            createCell(workbook, rows[24], 4,
                    "LIGHT_GREEN",
                    HSSFColor.LIGHT_GREEN.index);
            //LIGHT_ORANGE
            createCell(workbook, rows[25], 0,
                    "LIGHT_ORANGE",
                    HSSFColor.LIGHT_ORANGE.index);
            //LIGHT_TURQUOISE
            createCell(workbook, rows[26], 1,
                    "LIGHT_TURQUOISE",
                    HSSFColor.LIGHT_TURQUOISE.index);
            //LIGHT_YELLOW
            createCell(workbook, rows[27], 2,
                    "LIGHT_YELLOW",
                    HSSFColor.LIGHT_YELLOW.index);
            //LIME
            createCell(workbook, rows[28], 3,
                    "LIME",
                    HSSFColor.LIME.index);
            //MAROON
            createCell(workbook, rows[29], 4,
                    "MAROON",
                    HSSFColor.MAROON.index);
            //OLIVE_GREEN
            createCell(workbook, rows[30], 0,
                    "OLIVE_GREEN",
                    HSSFColor.OLIVE_GREEN.index);
            //ORANGE
            createCell(workbook, rows[31], 1,
                    "ORANGE",
                    HSSFColor.ORANGE.index);
            //ORCHID
            createCell(workbook, rows[32], 2,
                    "ORCHID",
                    HSSFColor.ORCHID.index);
            //PALE_BLUE
            createCell(workbook, rows[33], 3,
                    "PALE_BLUE",
                    HSSFColor.PALE_BLUE.index);
            //PINK
            createCell(workbook, rows[34], 4,
                    "PINK",
                    HSSFColor.PINK.index);
            //PLUM
            createCell(workbook, rows[35], 0,
                    "PLUM",
                    HSSFColor.PLUM.index);
            //RED
            createCell(workbook, rows[36], 1,
                    "RED",
                    HSSFColor.RED.index);
            //ROSE
            createCell(workbook, rows[37], 2,
                    "ROSE",
                    HSSFColor.ROSE.index);
            //ROYAL_BLUE
            createCell(workbook, rows[38], 3,
                    "ROYAL_BLUE",
                    HSSFColor.ROYAL_BLUE.index);
            //SEA_GREEN
            createCell(workbook, rows[39], 4,
                    "SEA_GREEN",
                    HSSFColor.SEA_GREEN.index);
            //SKY_BLUE
            createCell(workbook, rows[40], 0,
                    "SKY_BLUE",
                    HSSFColor.SKY_BLUE.index);
            //TAN
            createCell(workbook, rows[41], 1,
                    "TAN",
                    HSSFColor.TAN.index);
            //TEAL
            createCell(workbook, rows[42], 2,
                    "TEAL",
                    HSSFColor.TEAL.index);
            //TURQUOISE
            createCell(workbook, rows[43], 3,
                    "TURQUOISE",
                    HSSFColor.TURQUOISE.index);
            //VIOLET
            createCell(workbook, rows[44], 4,
                    "VIOLET",
                    HSSFColor.VIOLET.index);
            //WHITE
            createCell(workbook, rows[45], 0,
                    "WHITE",
                    HSSFColor.WHITE.index);
            //YELLOW
            createCell(workbook, rows[46], 1,
                    "YELLOW",
                    HSSFColor.YELLOW.index);

            //ファイルを保存する
            out = new FileOutputStream(OUT_FILE_NAME);
            workbook.write(out);
        }
        catch (IOException ioex)
        {
            LOGGER.error(getStackTrace(ioex));
        }
        finally
        {
            try
            {
                if (out != null)
                {
                    out.close();
                }
            }
            catch (IOException ioex)
            {
                LOGGER.error(getStackTrace(ioex));
            }

            LOGGER.info("[E N D]" + CLASS_NAME);
        }
    }

    /**
     * セルを作成します。<br/>
     * 作成したセルに指定された前景色(背景色)を設定します。<br/>
     *
     * @param workbook ワークブック
     * @param row 行
     * @param column カラム位置のインデックス
     * @param text セルに出力する文字列
     * @param fillBackgroundColor 前景色(背景色)
     */
    private static void createCell(
            HSSFWorkbook workbook,
            HSSFRow row,
            int column,
            String text,
            short fillForegroundColor)
    {
        //セルを追加する
        HSSFCell cell = row.createCell(column);

        //セルに文字列を設定する
        cell.setCellValue(new HSSFRichTextString(text));

        //セルの前景色(背景色)を設定する
        //※塗りつぶしパターンに「塗りつぶし」を設定する
        HSSFCellStyle style = workbook.createCellStyle();
        style.setFillForegroundColor(fillForegroundColor);
        style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        cell.setCellStyle(style);
    }
}

作成されたファイルを開くと、以下のように表示されます。
SampleSetFillForegroundColorOut.xls

SampleSetFillForegroundColorOut.xls(背景色)

関連記事

  1. コメント 0

  1. 2009 12/30

return top