セルの新規作成

広告

行のページにてセルを作成して追加する方法については簡単に見ましたが、ここではもう少し詳細にセルを作成する方法を確認します。

Apache POIにおいてセルを表すオブジェクトは「HSSFCell」クラス及び「XSSFCell」クラスのオブジェクトとなります。

HSSFCellクラスのクラス定義は次のようになっています。

public class HSSFCell
extends java.lang.Object implements Cell
java.lang.Object
 L org.apache.poi.hssf.usermodel.HSSFCell

新規にHSSFCellクラスのオブジェクトを作成するにはHSSFRowクラスで用意されているcreateCellメソッドなどを使って作成します。

HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet();
HSSFRow row = sheet.createRow(0);
HSSFCell cell = row.createCell(0);

続いてXSSFCellクラスです。XSSFCellクラスのクラス定義は次のようになっています。

public final class XSSFCell
extends java.lang.Object implements Cell
java.lang.Object
 L org.apache.poi.xssf.usermodel.XSSFCell

新規にXSSFCellクラスのオブジェクトを作成するにはXSSFRowクラスで用意されているcreateCellメソッドなどを使って作成します。

XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet();
XSSFRow row = sheet.createRow(0);
XSSFCell cell = row.createRow(0);

このようにExcel2003までの形式のセルと、Excel2007の形式のセルを明示的に作成することができます。

Rowインターフェース

「ss」ユーザーモデルでは、まずWorkbookインターフェースを実装したクラスのオブジェクトを作成し、そこからSheetインターフェースを実装したクラスのオブジェクトを作成し、そしてRowインターフェースを実装したクラスのオブジェクトを作成しました。同じようにセルを作成するにはRowインターフェースで用意されているcreateCellメソッドを使ってセルオブジェクトを作成します。

Use this to create new cells within the row and return it.

The cell that is returned is a Cell.CELL_TYPE_BLANK. The type can be changed either 
through calling setCellValue or setCellType. 

Returns:
  column - - the column number this cell represents
Returns:
  Cell a high level representation of the created cell. 
Throws:
  java.lang.IllegalArgumentException - if columnIndex < 0 or greater than the maximum 
    number of supported columns (255 for *.xls, 1048576 for *.xlsx)

このメソッドを使って作成されるオブジェクトはCellインターフェースを実装したクラスのオブジェクトとなります。Cellインターフェースは「HSSFCell」クラス及び「XSSFCell」クラスに共通するスーパーインターフェースです。

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

Workbook wb1 = new HSSFWorkbook();
Sheet sheet1 = wb1.createSheet();
Row row1 = sheet1.createSheet(0);
Cell cell1 = row1.createCell(0);

Workbook wb2 = new XSSFWorkbook();
Sheet sheet2 = wb2.createSheet();
Row row2 = sheet2.createSheet(0);
Cell cell2 = row2.createCell(0);

どちらのファイルフォーマットの形式のものであっても同じようにセルを扱うことができます。

なおこのメソッドを使って作成したセルのタイプは「Cell.CELL_TYPE_BLANK」となります。セルのタイプについては別ページで詳しく確認します。

( Written by Tatsuo Ikura )

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