セルに値を設定

広告

セルを新規作成したり既存のセルを取得したらセルに値を設定することができます。Cellインターフェースではセルに値を設定するためのメソッドとして下記のものが用意されています。

メソッド
booleansetCellValue(boolean value)
datesetCellValue(java.util.Calendar value)
datesetCellValue(java.util.Date value)
numericsetCellValue(double value)
rich stringsetCellValue(RichTextString value)
stringsetCellValue(java.lang.String value)

メソッドは同一で引数の型が異なるものが6つ用意されています。

またエラーと計算式を書き込むためのメソッドもそれぞれ用意されています。

メソッド
error valuesetCellErrorValue(byte value)
formulasetCellFormula(java.lang.String formula)

ここではまず数値と文字列の値を設定するためのメソッドについて確認します。

数値の値を書き込むにはsetCellValue(double value)メソッドを使います。

Set a numeric value for the cell

Parameters:
  value - the numeric value to set this cell to. For formulas we'll set the precalculated 
    value, for numerics we'll set its value. For other types we will change the cell to a 
    numeric cell and set its value.

文字列の値を書き込むにはsetCellValue(java.lang.String value)メソッドを使います。

Set a string value for the cell. 

Parameters:
  value - value to set the cell to. For formulas we'll set the formula string, for String 
    cells we'll set its value. For other types we will change the cell to a string cell 
    and set its value. If value is null then we will change the cell to a Blank cell.

どちらのメソッドの場合でも、値が設定されるセルのタイプによって表示形式が変わる可能性があります。こちらは別のページで確認します。

実際の使い方は次のようになります。

Workbook wb = new HSSFWorkbook();
Sheet sheet = wb.createSheet();
Row row = sheet.createSheet(0);
Cell cell = row.createCell(0);

cell.setCellValue("Hello");

日本語などであっても特に意識することなく設定することができます。

サンプルプログラム

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

Sample3_1.java

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import java.io.*;

public class Sample3_1{
  public static void main(String[] args){
    Workbook wb = new HSSFWorkbook();
    Sheet sheet = wb.createSheet();

    Row row1 = sheet.createRow(1);
    Row row2 = sheet.createRow(2);

    Cell cell1_0 = row1.createCell(0);
    Cell cell1_1 = row1.createCell(1);
    Cell cell1_2 = row1.createCell(2);

    Cell cell2_0 = row2.createCell(0);
    Cell cell2_1 = row2.createCell(1);
    Cell cell2_2 = row2.createCell(2);

    cell1_0.setCellValue(10);
    cell1_1.setCellValue(-8.5);
    cell1_2.setCellValue(3.14);

    cell2_0.setCellValue("Hello");
    cell2_1.setCellValue("表形式");
    cell2_2.setCellValue("3.14");

    FileOutputStream out = null;
    try{
      out = new FileOutputStream("sample3_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());
      }
    }
  }
}

プログラムを実行すると次のようなファイルが作成されます。

セルに値を設定

1行目の3つのセルには数値を設定し、2行目の3つのセルには文字列を設定しました。2行目と3行目のセルには値としては同じものが設定されていますが、数値と文字列ではデフォルトの表示形式が異なるため見た目は異なっています。

( Written by Tatsuo Ikura )

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