読者です 読者をやめる 読者になる 読者になる

私の歴史と今

読んでて恥ずかしくなるのが私の歴史。だけどそのときは今現在のように真面目に書いていた訳でね。そんな私の今を書いていく。

iReportはExcel向きではない、と思うがどうか。

java poi 帳票

iReportで、Excelのヘッダー/フッターを設定する方法がわからん。というのは置いておいて、兎に角、不明点も多いが、iReportはExcel向きではない。PDF向けならOK。PDFとExcelの帳票デザインを同じ方法で実現しようとしている点が問題だと思う。Excelで微調整すると、ほそーい列がいくつも作られたりする。セルベースでデザインできるようにすべきだと思うなあ。
その方法で一番簡単なのは、テンプレートとなるExcelファイルにデータを埋め込む方法。この方法を極めたライブラリ/ツールがないかなあ。
まあシンプルだし、簡単な埋め込みルールを決めてデータ注入する自作プログラムが一番かも。

個人的に、最近のPOIで嬉しかったのは、テンプレートの埋め込んであった計算式をデータ注入後再計算してくれるsetForceFormulaRecalculationメソッドと、計算式の範囲指定が行シフトに追随してくれるようになったこと。

公式サイトに次のように書いてあります。

Version 3.2-FINAL (2008-10-19)
•45890 - fixed HSSFSheet.shiftRows to also update conditional formats(POI-DEVELOPERS)
•45780 - Fixed HSSFSheet.shiftRows to also update Area refs(POI-DEVELOPERS)

http://poi.apache.org/changes.html

行シフトした時に、条件付フォーマットと範囲参照が更新されるようになったってことだよね。現システムの開発開始時点では無理だったので、非常にありがたいことです。
行シフトに関しては、他にも次のような改善があるようです。

Version 3.2-FINAL (2008-10-19)
•45373 - Improve the performance of HSSFSheet.shiftRows(POI-DEVELOPERS)
Version 3.0.2-FINAL (2008-02-04)
•34023 - When shifting rows, update formulas on that sheet to point to the new location of those rows(POI-DEVELOPERS)
•44070 - Fix for shifting comments when shifting rows(POI-DEVELOPERS)

http://poi.apache.org/changes.html

パフォーマンスの改善と、コメント位置の更新と、34023は何のことかな。数式の参照を更新してくれるようになったってことだと思うけど、45780との違いはなんだ? 34023はセル1つに対する参照で、45780は範囲参照のことだってことかな。まあ、最近いろいろ直ってるということなので、喜ばしいことです。

その他めぼしいのは

•45720 - Fixed HSSFWorkbook.cloneSheet to correctly clone sheets with drawings(POI-DEVELOPERS)

http://poi.apache.org/changes.html

図表も含め、シートのコピーを正確に行えるようになったと。

•45577 - Added implementations for Excel functions NOW and TODAY(POI-DEVELOPERS)

http://poi.apache.org/changes.html

now,today関数が使えるようになった?いまさら?私の誤訳?
そもそもExcel関数って、POIでサポートする云々なのかな。どんな関数でも埋め込んでしまえばあとはExcelがうまいことやってくれるのではないのかな。うーむ。

私が最初に使ったのは「Version 2.5.1-FINAL (2004-02-29)」版かなあ。なかなか安定しないもんだ。
だけど、3.5系では仕様公開している「Office OpenXML Format」をサポートし始めたので、これについては活発に開発されていきそう。

よし。今年度はあきらめてPOIでモリモリ行こう。
JavaRubySAStrutsも色々手をだすぞ)