倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

PoiBuilder で Quick Guide (1) : ワークブックを作成

最近、FactoryBuilderSupport でビルダー作るのにはハマっていて、只今、Apache POI のスプレッドシートを構築するビルダーを作成中*1。 で、動作確認のサンプルコードがないかなぁと思っていたら「Busy Developers' Guide to HSSF and XSSF Features」にたくさんサンプルコードがあったので、それらをビルダーで書き換えてみようかと思います(一覧)。 取り上げるサンプルはスプレッドシートを構築しているものだけなのでアシカラズ。

今回は「ワークブックを作成 (New Workbook)」

HSSFWorkbook の場合


Java コード

    Workbook wb = new HSSFWorkbook();
    FileOutputStream fileOut = new FileOutputStream("workbook.xls");
    wb.write(fileOut);
    fileOut.close();

PoiBuilder による構築

ワークブックは workbook ノードで作成します。 特に指定がない限り、HSSFWorkbook クラスのインスタンスが生成されます:

@GrabResolver('http://www5.ocn.ne.jp/~coast/repo/')
@Grab('org.waman.tools:poi-builder:0.0.3')

import org.waman.tools.poi.PoiBuilder

// ワークブックの作成
def workbook = new PoiBuilder().workbook()

// ワークブックの書き出し
new File('workbook.xls').withOutputStream { workbook.write(it) }

XSSFWorkbook の場合


Java コード

    Workbook wb = new XSSFWorkbook();
    FileOutputStream fileOut = new FileOutputStream("workbook.xlsx");
    wb.write(fileOut);
    fileOut.close();

PoiBuilder による構築

HSSFWorkbook 以外の Workbook オブジェクトを構築したい場合は、自分でその Workbook オブジェクトを生成して、workbook ノードに渡してください:

@GrabResolver('http://www5.ocn.ne.jp/~coast/repo/')
@Grab('org.waman.tools:poi-builder:0.0.3')
@Grab('org.apache.poi:poi-ooxml:3.8-beta3')    // OOXML 関連のライブラリ

import org.apache.poi.xssf.usermodel.XSSFWorkbook
import org.waman.tools.poi.PoiBuilder

def workbook = new PoiBuilder().workbook(new XSSFWorkbook())

new File('workbook.xls').withOutputStream { workbook.write(it) }

「XSSF〜」関連のクラスは、別途ライブラリを追加しないと動きませんのでご注意を。 そう言えば、@Grapes アノテーション使わなくても @Grab を複数書けるようになったんですね。

現場で使えるJavaライブラリ

現場で使えるJavaライブラリ


プログラミングGROOVY

プログラミングGROOVY

*1:id:kimukou_26 氏にコメントいただいた「Simple ODF」の方が API 的には簡単そうですが、何分、もともと書いてたコードがあるので Apache POI のサンプル書いていきますm(_ _)m 機会があれば Simple ODF の方にも手を伸ばしてみようかと。