Apache POI – 色をカスタマイズするには


色をカスタマイズするには、HSSFPaletteクラスのsetColorAtIndexメソッドを使用します。

HSSFColorクラスで定義されている色は以下の通りです。

HSSFColorクラスで定義されている値
AQUA HSSFColor.AQUA
BLACK HSSFColor.BLACK
BLUE HSSFColor.BLUE
BLUE_GREY HSSFColor.BLUE_GREY
BRIGHT_GREEN HSSFColor.BRIGHT_GREEN
BROWN HSSFColor.BROWN
CORAL HSSFColor.CORAL
CORNFLOWER_BLUE HSSFColor.CORNFLOWER_BLUE
DARK_BLUE HSSFColor.DARK_BLUE
DARK_GREEN HSSFColor.DARK_GREEN
DARK_RED HSSFColor.DARK_RED
DARK_TEAL HSSFColor.DARK_TEAL
DARK_YELLOW HSSFColor.DARK_YELLOW
GOLD HSSFColor.GOLD
GREEN HSSFColor.GREEN
GREY_25_PERCENT HSSFColor.GREY_25_PERCENT
GREY_40_PERCENT HSSFColor.GREY_40_PERCENT
GREY_50_PERCENT HSSFColor.GREY_50_PERCENT
GREY_80_PERCENT HSSFColor.GREY_80_PERCENT
INDIGO HSSFColor.INDIGO
LAVENDER HSSFColor.LAVENDER
LEMON_CHIFFON HSSFColor.LEMON_CHIFFON
LIGHT_BLUE HSSFColor.LIGHT_BLUE
LIGHT_CORNFLOWER_BLUE HSSFColor.LIGHT_CORNFLOWER_BLUE
LIGHT_GREEN HSSFColor.LIGHT_GREEN
LIGHT_ORANGE HSSFColor.LIGHT_ORANGE
LIGHT_TURQUOISE HSSFColor.LIGHT_TURQUOISE
LIGHT_YELLOW HSSFColor.LIGHT_YELLOW
LIME HSSFColor.LIME
MAROON HSSFColor.MAROON
OLIVE_GREEN HSSFColor.OLIVE_GREEN
ORANGE HSSFColor.ORANGE
ORCHID HSSFColor.ORCHID
PALE_BLUE HSSFColor.PALE_BLUE
PINK HSSFColor.PINK
PLUM HSSFColor.PLUM
RED HSSFColor.RED
ROSE HSSFColor.ROSE
ROYAL_BLUE HSSFColor.ROYAL_BLUE
SEA_GREEN HSSFColor.SEA_GREEN
SKY_BLUE HSSFColor.SKY_BLUE
TAN HSSFColor.TAN
TEAL HSSFColor.TEAL
TURQUOISE HSSFColor.TURQUOISE
VIOLET HSSFColor.VIOLET
WHITE HSSFColor.WHITE
YELLOW HSSFColor.YELLOW

setColorAtIndexメソッドでは、HSSFColorクラスで定義されている色を変更することになります。
新しい色を追加するわけではありませんので、一旦、変更すると、元々定義されていた色では表示されなくなります。

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

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.HSSFPalette;
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 SampleSetCustomColors extends AbstractSample
{
    /** クラス名 */
    private static final String CLASS_NAME =
        SampleSetCustomColors.class.getSimpleName();

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

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

    /**
     * SampleSetCustomColorsオブジェクトを構築すると、
     * UnsupportedOperationExceptionがスローされます。<br/>
     */
    protected SampleSetCustomColors()
    {
        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 row =  sheet.createRow(1);

            //パレットを取得する
            HSSFPalette palette = workbook.getCustomPalette();

            //HSSFColorクラスで定義されているREDの色構成を変更する
            palette.setColorAtIndex(HSSFColor.RED.index,
                    //RGB(赤) 255⇒153
                    (byte)153,
                    //RGB(緑)
                    (byte)0,
                    //RGB(青)
                    (byte)0);

            //セルを追加する
            HSSFCell cell = row.createCell(1);

            //セルに文字列を設定する
            cell.setCellValue(new HSSFRichTextString("RED(変更後)"));

            //背景色を変更したREDで塗りつぶす
            HSSFCellStyle style = workbook.createCellStyle();
            style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
            style.setFillForegroundColor(HSSFColor.RED.index);
            cell.setCellStyle(style);

            //ファイルを保存する
            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);
        }
    }
}

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

SampleSetCustomColorsOut.xls(背景色)

関連記事

  1. コメント 0

  1. トラックバック 0

return top