倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

PoiBuilder で Quick Guide (8) : 塗パターンと色

今回はセル内の塗り方のパターンと色 (Fills and colors) です(一覧)。

Java コード


セル内の色の塗り方と色を設定するサンプル。

    Workbook wb = new XSSFWorkbook();
    Sheet sheet = wb.createSheet("new sheet");

    // Create a row and put some cells in it. Rows are 0 based.
    Row row = sheet.createRow((short) 1);

    // Aqua background
    CellStyle style = wb.createCellStyle();
    style.setFillBackgroundColor(IndexedColors.AQUA.getIndex());
    style.setFillPattern(CellStyle.BIG_SPOTS);
    Cell 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(IndexedColors.ORANGE.getIndex());
    style.setFillPattern(CellStyle.SOLID_FOREGROUND);
    cell = row.createCell((short) 2);
    cell.setCellValue("X");
    cell.setCellStyle(style);

PoiBuilder による構築


PoiBuilder による構築。 今までのサンプルと大して変わりません。

@GrabResolver('http://www5.ocn.ne.jp/~coast/repo/')
@Grab('org.waman.tools:poi-builder:0.0.4')
@Grab('org.apache.poi:poi-ooxml:3.8-beta3')

import org.waman.tools.poi.PoiBuilder
import org.apache.poi.xssf.usermodel.XSSFWorkbook

def builder = new PoiBuilder()
def workbook = builder.workbook(new XSSFWorkbook()){
    sheet('new sheet'){
        row(1){
            cell(1, cellValue:'X', cellStyle:cellStyle(fillBackgroundColor:AQUA, fillPattern:BIG_SPOTS))
            cell(2, cellValue:'X', cellStyle:cellStyle(fillForegroundColor:ORANGE, fillPattern:SOLID_FOREGROUND))
        }
    }
}

このサンプルでは、Java コードと同様に XSSFWorksheet に対して構築を行ってますが、HSSFWorksheet に対して行うといまいち色がきちんと描画されないようです。 色に関してはまた後ほど出てくるのでそこで考えます。

作成されるスプレッドシート




塗パターンあれこれ


塗パターンをあれこれ変えてセルを塗りつぶしてみました。



色はすべてのセルで同じ BLUE をセットしています。 表示させているのは LibreOffice ですが*1、色の濃さが変わってるだけですね。 Excel で表示させればまた違うんでしょうけど。
プログラミングGROOVY

プログラミングGROOVY

*1:拙者の PC に Excel 入ってないので ^ ^;)