セルタイプの設定

広告

前のページではセルに設定されているセルタイプの取得を行いました。セルタイプは設定した値に応じて自動的に設定されますが、ここではセルタイプを明示的に設定する方法を確認します。

セルタイプを設定するにはCellインターフェースで用意されているsetCellTypeメソッドを使います。

Set the cells type (numeric, formula or string) 

Throws:
  java.lang.IllegalArgumentException - if the specified cell type is invalid

引数にはセルタイプを表すint型の値を取得できます。設定可能な値はCellインターフェースで定義されており次のいずれかの値となります。

定数
0Cell.CELL_TYPE_NUMERIC
1Cell.CELL_TYPE_STRING
2Cell.CELL_TYPE_FORMULA
3Cell.CELL_TYPE_BLANK
4Cell.CELL_TYPE_BOOLEAN
5Cell.CELL_TYPE_ERROR

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

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

cell.setCellType(Cell.CELL_TYPE_STRING);

この場合は、セルのセルタイプを「CELL_TYPE_STRING」に設定しています。

サンプルプログラム

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

Sample6_1.java

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import java.io.*;
import java.util.Calendar;
import java.util.Date;

public class Sample6_1{
  public static void main(String[] args){
    Workbook wb = new HSSFWorkbook();
    Sheet sheet = wb.createSheet();
    Row row = sheet.createRow(1);

    Cell cell0 = row.createCell(0);
    Cell cell1 = row.createCell(1);
    Cell cell2 = row.createCell(2);

    cell0.setCellValue(123);
    cell1.setCellValue(123);
    cell2.setCellValue(123);

    cell0.setCellType(Cell.CELL_TYPE_NUMERIC);
    cell1.setCellType(Cell.CELL_TYPE_STRING);
    cell2.setCellType(Cell.CELL_TYPE_BOOLEAN);

    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());
      }
    }
  }
}

プログラムを実行すると、同じ値が設定された3つのセルに対して異なるセルタイプを設定します。それでは作成されたExcelファイルを開いてみます。

セルタイプの設定

設定された値が同じであってもセルタイプによって表示形式が変わったり値そのものがセルタイプに合わせて変更されることが確認できます。

( Written by Tatsuo Ikura )

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