最近、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 を複数書けるようになったんですね。
- 作者: 竹添直樹,島本多可子,小津美夕紀,亀井隆司
- 出版社/メーカー: 翔泳社
- 発売日: 2011/07/16
- メディア: 大型本
- 購入: 6人 クリック: 217回
- この商品を含むブログ (20件) を見る
- 作者: 関谷和愛,上原潤二,須江信洋,中野靖治
- 出版社/メーカー: 技術評論社
- 発売日: 2011/07/06
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 392回
- この商品を含むブログ (152件) を見る
*1:id:kimukou_26 氏にコメントいただいた「Simple ODF」の方が API 的には簡単そうですが、何分、もともと書いてたコードがあるので Apache POI のサンプル書いていきますm(_ _)m 機会があれば Simple ODF の方にも手を伸ばしてみようかと。