2009년 11월 28일 토요일

s2Fisshplate

009-10-09

[]S2Fisshplateを使ってみる 17:08 S2Fisshplateを使ってみる - 抜かれるならド肝だよね を含むブックマーク はてなブックマーク - S2Fisshplateを使ってみる - 抜かれるならド肝だよね Add Star

今の案件では,Excelを帳票として出力する機能があるんですが,POIでポイポイするのは結構大変・・・。しかも,何だかズイブンと複雑なExcel帳票を依頼されたので,何とか工数を削減出来ないものかと,id:gokingさんにヘルプを頼んでみました。

そこで候補として上がったのがFisshplateで,S2Fisshplateなんてものまであったんで,導入してみようと思いホゲホゲしてみた(実際にホゲホゲしたのはgokingさんなんですけどねw)

そもそもFisshplateって何じゃらホイ?

Fisshplateとは,Excelテンプレート式を記述して,テンプレート式を元に動的にデータを出力しちゃおうというライブラリです。

埋め込みデータ

動的に値をテンプレートに出力するには,

${hoge}
${foo.hoge}

プログラム側からは,Mapで渡してキー文字列がテンプレートのバインド変数となり,値を参照する事が出来ます。JavaBeansの場合はプロパティを参照(ネストもOKっぽい)出来るようです。(getterが必要)

テンプレート

文法(テンプレート式)には,以下のようなものがあります。

独自タグテンプレート式)

独自にタグも作成できるらしく,「要素クラス」と「パースクラス」のペアを作成して,「FPTemplate」クラスにaddしてあげればOKみたい。

S2Fisshplate

S2Fisshplateは,S2とFisshplateを連携させて,インタフェースを定義するだけでFisshplateの機能を使う事が出来ます。S2FisshplateはS2Containerに非依存との事。

基本的には,Fisshplateと利用方法は一緒なんですが,規約に沿った形で作らないと処理されません。(インターフェースExcelテンプレートのファイル名とか)

テンプレートに埋め込むDtoプロパティは,「プロパティのsetter、getterを必ず作って下さい。publicフィールドの動作は確認していません。」との事でしたが,サンプルで動かしたDtoはpublicフィールドでも動作しました。ただ,確認していないとの事なので,setter/getterは用意した方が良いかも。

何となく思った事

Fisshplateは決まりきったテンプレートに対して,値を動的に出力する場合には威力を発揮すると思います。ただ,複雑怪奇なテンプレートに対して適用すると返って大変になりそうなので,複雑なテンプレートに対しては,Fisshplateを部分的に利用して,後は素のPOIでポイポイした方が良いような気がします。

また,縦方向の繰り返しには強いんですが,横方向の繰り返しはちょっと弱いようなので,そういった部分でも利用には注意が必要かもです。

댓글 없음:

댓글 쓰기