書式の設定

広告

セルに設定された値が数値や日付だった場合に、その表示形式を指定するための書式をスタイルに設定する方法を確認します。

スタイルに書式を設定するにはCellStyleインターフェースで用意されているsetDataFormatメソッドを使います。

set the data format (must be a valid format) 

引数には書式を表すshort型の値を指定します。

任意の書式からsetDataFormatメソッドの引数に指定するshort型の値を取得するには次の手順に従って下さい。まずWorkbookインターフェースで用意されているcreateDataFormatメソッドを使ってDataFormatインターフェースを実装したクラスのオブジェクトを作成します。

Returns the instance of DataFormat for this workbook.

Returns:
  the DataFormat object

作成されるオブジェクトはorg.apache.poi.ss.usermodel.DataFormatインターフェースを実装したクラスのオブジェクトとなります。続いてDataFormatインターフェースで用意されているgetFormatメソッドを使って書式を表す文字列をshort型の値へ変換します。

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"));

これで文字列で指定した書式をスタイルへ設定することができます。

サンプルプログラム

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

Sample6_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 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 )

関連記事 (一部広告含む)