前景色と背景色

広告

セルに対する前景色と背景色のスタイルを設定する方法を確認します。なおここで前景色というのはセルに表示される文字の色ではありません。セルは前景色で指定した色の上に、パターン種別と背景色で作成されたパターンが表示されます。

前景色を設定するにはCellStyleインターフェースで用意されているsetFillForegroundColorメソッドを使います。

set the foreground fill color
Note: Ensure Foreground color is set prior to background color.

Parameters:
  bg - color

背景色を設定するにはCellStyleインターフェースで用意されているsetFillBackgroundColorメソッドを使います。

set the background fill color. 

Parameters:
  bg - color

どちらのメソッドも引数には色を表すshort型の値を指定します。

標準パレットに含まれている色については「org.apache.poi.ss.usermodel.IndexedColors」にて列挙型として定義されています。

AQUA               AUTOMATIC          BLACK              BLUE
BLUE_GREY          BRIGHT_GREEN       BROWN              CORAL
CORNFLOWER_BLUE    DARK_BLUE          DARK_GREEN         DARK_RED
DARK_TEAL          DARK_YELLOW        GOLD               GREEN
GREY_25_PERCENT    GREY_40_PERCENT    GREY_50_PERCENT    GREY_80_PERCENT
INDIGO             LAVENDER           LEMON_CHIFFON      LIGHT_BLUE
LIGHT_CORNFLOWER_BLUE                 LIGHT_GREEN        LIGHT_ORANGE
LIGHT_TURQUOISE    LIGHT_YELLOW       LIME               MAROON
OLIVE_GREEN        ORANGE             ORCHID             PALE_BLUE
PINK               PLUM               RED                ROSE
ROYAL_BLUE         SEA_GREEN          SKY_BLUE           TAN
TEAL               TURQUOISE          VIOLET             WHITE
YELLOW 

色を表すインデックスを取得するには、IndexedColorsで定義されているgetIndexメソッドを使います。

Returns index of this color 

Parameters:
  index of this color

実際の使い方は次のようになります。

Workbook wb = new HSSFWorkbook();
CellStyle style = wb.createCellStyle();

style.setFillForegroundColor(IndexedColors.MAROON.getIndex());
style.setFillBackgroundColor(IndexedColors.SKY_BLUE.getIndex());

これで前景色に「MAROON」、背景色に「SKY_BLUE」が設定されたスタイルが作成されました。

なお背景色とパターンの設定については次のページで詳しく確認します。次のサンプルではパターンとして「SOLID_FOREGROUND」を指定し、前景色で塗りつぶすように指定しています。

サンプルプログラム

実際に試してみましょう。

Sample2_1.java

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import java.io.*;

public class Sample2_1{
  public static void main(String[] args){
    Workbook wb = new HSSFWorkbook();
    Sheet sheet = wb.createSheet();

    Row row1 = sheet.createRow(1);

    Cell cell1_0 = row1.createCell(0);
    Cell cell1_1 = row1.createCell(1);
    Cell cell1_2 = row1.createCell(2);

    cell1_0.setCellValue("MAROON");
    cell1_1.setCellValue("RED");
    cell1_2.setCellValue("AQUA");

    CellStyle style1 = wb.createCellStyle();
    style1.setFillPattern(CellStyle.SOLID_FOREGROUND);
    style1.setFillForegroundColor(IndexedColors.MAROON.getIndex());

    CellStyle style2 = wb.createCellStyle();
    style2.setFillPattern(CellStyle.SOLID_FOREGROUND);
    style2.setFillForegroundColor(IndexedColors.RED.getIndex());

    CellStyle style3 = wb.createCellStyle();
    style3.setFillPattern(CellStyle.SOLID_FOREGROUND);
    style3.setFillForegroundColor(IndexedColors.AQUA.getIndex());

    cell1_0.setCellStyle(style1);
    cell1_1.setCellStyle(style2);
    cell1_2.setCellStyle(style3);

    FileOutputStream out = null;
    try{
      out = new FileOutputStream("sample2_1.xls");
      wb.write(out);
    }catch(IOException e){
      System.out.println(e.toString());
    }finally{
      try {
        out.close();
      }catch(IOException e){
        System.out.println(e.toString());
      }
    }
  }
}

3つのセルに対してそれぞれ別のスタイルを作成し設定しています。それでは作成されたExcelファイルを開いてみます。

前景色と背景色

今回は前景色で塗りつぶすパターンを指定していますので、前景色だけを指定しています。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。