書式の設定
セルに設定された値が数値や日付だった場合に、その表示形式を指定するための書式をスタイルに設定する方法を確認します。
スタイルに書式を設定するにはCellStyleインターフェースで用意されているsetDataFormatメソッドを使います。
void setDataFormat(short fmt)
set the data format (must be a valid format)
引数には書式を表すshort型の値を指定します。
任意の書式からsetDataFormatメソッドの引数に指定するshort型の値を取得するには次の手順に従って下さい。まずWorkbookインターフェースで用意されているcreateDataFormatメソッドを使ってDataFormatインターフェースを実装したクラスのオブジェクトを作成します。
DataFormat createDataFormat()
Returns the instance of DataFormat for this workbook. Returns: the DataFormat object
作成されるオブジェクトはorg.apache.poi.ss.usermodel.DataFormatインターフェースを実装したクラスのオブジェクトとなります。続いてDataFormatインターフェースで用意されているgetFormatメソッドを使って書式を表す文字列をshort型の値へ変換します。
short getFormat(java.lang.String format)
get the format index that matches the given format string. Creates a new format if one is not found. Aliases text to the proper format. Parameters: format - string matching a built in format Returns: index of format.
引数に書式を表す文字列を指定すると、それに対応したshort型の値を返してきます。
実際の使い方は次のようになります。
Workbook wb = new HSSFWorkbook();
DataFormat format = wb.createDataFormat();
CellStyle style = wb.createCellStyle();
style.setDataFormat(format.getFormat("#,##0"));
これで文字列で指定した書式をスタイルへ設定することができます。
サンプルプログラム
実際に試してみましょう。
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 Sample6_1{
public static void main(String[] args){
Workbook wb = new HSSFWorkbook();
Sheet sheet = wb.createSheet();
Row row = sheet.createRow(1);
Cell cell1_1 = row.createCell(1);
Cell cell1_2 = row.createCell(2);
cell1_1.setCellValue(1234);
cell1_2.setCellValue(1234);
DataFormat format = wb.createDataFormat();
CellStyle style1 = wb.createCellStyle();
style1.setDataFormat(format.getFormat("0"));
cell1_1.setCellStyle(style1);
CellStyle style2 = wb.createCellStyle();
style2.setDataFormat(format.getFormat("#,##0"));
cell1_2.setCellStyle(style2);
FileOutputStream out = null;
try{
out = new FileOutputStream("sample6_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());
}
}
}
}
書式を設定した2つのスタイルを作成し、別々のセルに対して設定しています。それでは作成されたExcelファイルを開いてみます。
二つのセルには同じ値が設定されていますが、異なる書式を設定したスタイルをそれぞれのセルに設定しているため、見た目が異なって表示されます。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。