POIを使用してExcelの書式を設定する:JavaTips 〜Apache/Jakarta編
「POIを使用してJavaからExcel出力を行う」では、POIを使用した基本的なExcelファイルの出力方法について紹介しました。しかし、せっかく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からセルの書式を設定する方法を整理すると、以下の手順になります。
- スタイルを制御するHSSFCellStyleクラスの作成(HSSFWorkbook#createCellStyleメソッド)
- スタイルの設定(HSSFCellStyle#set〜メソッド)
- フォントを制御するHSSFFontクラスの作成(HSSFWorkbook#createFontメソッド)
- フォントの設定(HSSFFont#set〜メソッド)
- フォントを反映させたいスタイルに設定(HSSFCellStyle#setFontメソッド)
- スタイルを反映させたいセルに設定(HSSFCell#setCellStyleメソッド)
なお、本稿で紹介した以外にも多数の属性を変更することが可能です。より細かい設定が必要になった場合には、POIに付属しているドキュメントを参照することをお勧めします。
Copyright © ITmedia, Inc. All Rights Reserved.