POIを使用してExcelの書式を設定するJavaTips 〜Apache/Jakarta編

» 2004年08月10日 10時00分 公開

 「POIを使用してJavaからExcel出力を行う」では、POIを使用した基本的なExcelファイルの出力方法について紹介しました。しかし、せっかくExcelファイルとして出力するなら、単純な出力だけではなく、色を変えたり、けい線を引いたりして見栄えの良い書式で出力できなければ、そのメリットは半減してしまいます。そこで、今回はPOIを使用して、下のようなセル書式を変更したExcelファイルを出力する方法を紹介します。

POIによって生成・書式設定されたExcelファイル POIによって生成・書式設定されたExcelファイル

 このExcelファイルを生成するプログラムは下記のとおりです。

PoiSample2.java
package to.msn.wings;

import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;

public class PoiSample2 {
    public static void main(String[] args) {
        try {
            //新規のブック・シート・行オブジェクトを作成する
            HSSFWorkbook wb = new HSSFWorkbook();
            FileOutputStream fileOut =
                new FileOutputStream("C:\\PoiSampleBook2.xls");
            HSSFSheet sheet1 = wb.createSheet("Sample");
            HSSFRow row2 = sheet1.createRow(1);

            //▼右寄せ
            HSSFCell cellB2 = row2.createCell((short) 1);
            cellB2.setEncoding(HSSFCell.ENCODING_UTF_16);
            cellB2.setCellValue("B2右寄せ");
            //HSSFCellStyleクラスのsetAlignmentメソッドで右寄せ設定
            HSSFCellStyle styleB2 = wb.createCellStyle();
            styleB2.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
            cellB2.setCellStyle(styleB2);

            //▼けい線
            HSSFCell cellC2 = row2.createCell((short) 2);
            cellC2.setEncoding(HSSFCell.ENCODING_UTF_16);
            cellC2.setCellValue("C2けい線");
            //HSSFCellStyleクラスのsetBorder〜メソッドでけい線設定
            HSSFCellStyle styleC2 = wb.createCellStyle();
            styleC2.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);
            styleC2.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);
            styleC2.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);
            styleC2.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM);
            cellC2.setCellStyle(styleC2);

            //▼フォント
            HSSFCell cellD2 = row2.createCell((short) 3);
            cellD2.setCellValue("D2FONT");
            //HSSFFontクラスのsetFontNameメソッドでフォント設定
            HSSFCellStyle styleD2 = wb.createCellStyle();
            HSSFFont fontD2 = wb.createFont();
            fontD2.setFontName("Century Gothic");
            styleD2.setFont(fontD2);
            cellD2.setCellStyle(styleD2);

            //▼太字
            HSSFCell cellE2 = row2.createCell((short) 4);
            cellE2.setEncoding(HSSFCell.ENCODING_UTF_16);
            cellE2.setCellValue("E2太字/斜体");
            //HSSFFontクラスのsetBoldweightメソッドで太字を設定
            //HSSFFontクラスのsetItalicメソッドで斜体を設定
            HSSFCellStyle styleE2 = wb.createCellStyle();
            HSSFFont fontE2 = wb.createFont();
            fontE2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
            fontE2.setItalic(true);
            styleE2.setFont(fontE2);
            cellE2.setCellStyle(styleE2);

            //▼背景を黄色、文字を赤色
            HSSFCell cellF2 = row2.createCell((short) 5);
            cellF2.setEncoding(HSSFCell.ENCODING_UTF_16);
            cellF2.setCellValue("F2赤色/黄色");
            //HSSFCellStyleクラスのsetFill〜メソッドで背景色設定        
            HSSFCellStyle styleF2 = wb.createCellStyle();
            styleF2.setFillForegroundColor(HSSFColor.YELLOW.index);
            styleF2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
            //HSSFFontクラスのsetColorメソッドで文字色を設定
            HSSFFont fontF2 = wb.createFont();
            fontF2.setColor(HSSFFont.COLOR_RED);
            styleF2.setFont(fontF2);
            cellF2.setCellStyle(styleF2);

            //▼作成したワークブックを保存する
            wb.write(fileOut);
            fileOut.close();
            System.out.println(
                "Excelファイルの作成が完了しました!");

        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("処理が失敗しました");
        }
    }
}


 セル「B2〜C2」のように、表示位置などのセル属性を変更したい場合には、HSSFCellStyleクラスを使用します。

HSSFCellStyleクラスの主要なメソッド
メソッド名 説明
setAlignment 水平位置を設定(右寄せ・センタリング)
setFillPattern 塗りつぶしパターンを設定
setFillForegroundColor 背景色を設定
setBorderRight 右枠のけい線を設定
setBorderLeft 左枠のけい線を設定
setBorderTop 上枠のけい線を設定
setBorderBottom 下枠のけい線を設定

 セル「D2〜F2」のように、フォントなどの文字属性を変更したい場合には、HSSFFontクラスを使用します。

HSSFFontクラスの主要なメソッド
メソッド名 説明
setBoldweight 太字に設定
setItalic 斜字体を設定
setColor 文字色を設定
setFontName フォントを設定

 今回紹介した、POIからセルの書式を設定する方法を整理すると、以下の手順になります。

  1. スタイルを制御するHSSFCellStyleクラスの作成(HSSFWorkbook#createCellStyleメソッド)
  2. スタイルの設定(HSSFCellStyle#set〜メソッド)
  3. フォントを制御するHSSFFontクラスの作成(HSSFWorkbook#createFontメソッド)
  4. フォントの設定(HSSFFont#set〜メソッド)
  5. フォントを反映させたいスタイルに設定(HSSFCellStyle#setFontメソッド)
  6. スタイルを反映させたいセルに設定(HSSFCell#setCellStyleメソッド)

 なお、本稿で紹介した以外にも多数の属性を変更することが可能です。より細かい設定が必要になった場合には、POIに付属しているドキュメントを参照することをお勧めします。

Profile

WINGSプロジェクト

青木淳夫・岡雅久


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。