ワークブックの新規作成

広告

Apache POIにおいてワークブックは「HSSFWorkbook」クラス及び「XSSFWorkbook」クラスを使います。「HSSFWorkbook」クラスはExcel2003までのファイルフォーマットを扱うもの、「XSSFWorkbook」クラスはExcel2007におけるOOXML(Office Open XML)形式のファイルフォーマットを扱うためのものです。

HSSFWorkbookクラス

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

public class HSSFWorkbook
extends POIDocument implements Workbook
java.lang.Object
 L org.apache.poi.POIDocument
     L org.apache.poi.hssf.usermodel.HSSFWorkbook

コンストラクタは7つ用意されています。

コンストラクタの概要
HSSFWorkbook()
Creates new HSSFWorkbook from scratch (start here!)
HSSFWorkbook(DirectoryNode directory, POIFSFileSystem fs, boolean preserveNodes)
given a POI POIFSFileSystem object, and a specific directory within it, read in its Workbook and populate the high and low level models.
HSSFWorkbook(java.io.InputStream s)
--
HSSFWorkbook(java.io.InputStream s, boolean preserveNodes)
Companion to HSSFWorkbook(POIFSFileSystem), this constructs the POI filesystem around your inputstream.
HSSFWorkbook(POIFSFileSystem fs)
--
HSSFWorkbook(POIFSFileSystem fs, boolean preserveNodes)
given a POI POIFSFileSystem object, read in its Workbook and populate the high and low level models.
protected HSSFWorkbook(Workbook book)
--

新規にワークブックを作成するためには1番目のコンストラクタを使用します。

Creates new HSSFWorkbook from scratch (start here!) 

使い方としては下記のようになります。

HSSFWorkbook wb = new HSSFWorkbook();

これでExcel2003までのファイルフォーマットに対応したワークブックを表すオブジェクトが作成されました。このオブジェクトに対してシートを追加したりすることが可能になります。(なお実際のファイルが作成されたわけではありません)。

XSSFWorkbookクラス

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

public class XSSFWorkbook
extends POIXMLDocument implements Workbook, java.lang.Iterable<XSSFSheet>
java.lang.Object
 L org.apache.poi.POIXMLDocumentPart
     L org.apache.poi.POIXMLDocument
         L org.apache.poi.xssf.usermodel.XSSFWorkbook

コンストラクタは4つ用意されています。

コンストラクタの概要
XSSFWorkbook()
Create a new SpreadsheetML workbook.
XSSFWorkbook(java.io.InputStream is)
--
XSSFWorkbook(OPCPackage pkg)
Constructs a XSSFWorkbook object given a OpenXML4J Package object, see www.openxml4j.org.
XSSFWorkbook(java.lang.String path)
Constructs a XSSFWorkbook object given a file name.

新規にワークブックを作成するためには1番目のコンストラクタを使用します。

Create a new SpreadsheetML workbook. 

使い方としては下記のようになります。

XSSFWorkbook wb = new XSSFWorkbook();

これでExcel2007で使用可能なOOXML形式のファイルフォーマットに対応したワークブックを表すオブジェクトが作成されました。このオブジェクトに対してシートを追加したりすることが可能になります。(なお実際のファイルが作成されたわけではありません)。

Workbookインターフェース

HSSFWorkbookクラス及びXSSFWorkbookクラスはどちらもWorkbookインターフェースを実装したクラスとなっています。

これらのクラス及びインターフェースは次のように定義されていました。

org.apache.poi.hssf.usermodel.HSSFWorkbook;
org.apache.poi.xssf.usermodel.XSSFWorkbook;
org.apache.poi.ss.usermodel.Workbook;

HSSFに対応したワークブックを作成したりシートを作成したりする場合は「hssf」ユーザーモデルと呼ばれるものを使用しています。またXSSFに対応したものは「xssf」ユーザーモデルと呼ばれるものを使用しています。この二つの完全に区別し、扱うファイルフォーマット毎に対応したユーザーモデルを使うことも可能ですが、新たに導入された「ss」ユーザーモデルを使用すると、どちらのファイルフォーマットに対応したものであっても同じように扱うことができあす。

WorkbookインターフェースはHSSFWorkbookクラス及びXSSFWorkbookクラスに共通するインターフェースですが「ss」ユーザーモデルに基づいています。今後ワークブックオブジェクトを作成する場合は、次のように記述していきます。

Workbook wb1 = new HSSFWorkbook();
Workbook wb2 = new XSSFWorkbook();

作成したワークブックオブジェクトに対しては、同じく「ss」ユーザーモデルに基づいたシートやセルなどを追加することができますので、どちらのファイルフォーマットであっても同じように処理することが可能となります。

サンプルプログラム

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

Sample1_1.java

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;

public class Sample1_1{
  public static void main(String[] args){
    HSSFWorkbook wb1 = new HSSFWorkbook();
    XSSFWorkbook wb2 = new XSSFWorkbook();

    Workbook wb3 = new HSSFWorkbook();
    Workbook wb4 = new XSSFWorkbook();
  }
}

今回の場合はオブジェクトを作成しているだけなので、コンパイル後に実行してみても特に何も起きません。では次のページにて、作成したオブジェクトをファイルに保存する方法を確認します。

( Written by Tatsuo Ikura )

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