ワークブックの新規作成
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番目のコンストラクタを使用します。
public HSSFWorkbook()
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番目のコンストラクタを使用します。
public XSSFWorkbook()
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」ユーザーモデルに基づいたシートやセルなどを追加することができますので、どちらのファイルフォーマットであっても同じように処理することが可能となります。
サンプルプログラム
実際に試してみましょう。
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 )
著者> TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。