Java Excel API を眺める
以前、Microsoft Office の製品で作成されたデータを見ることができるJavaのライブラリとして、
Jakarta POI を紹介した。
Jakarta POI を眺める
私自身、POIの主な用途として、Excelファイルを作成・閲覧したいという要求があったので、
Excel関連の機能について紹介した(つもり)記事である。
今回は、別のライブラリ、Java Excel API(以下JXLとする) を眺めてみる。
JXLはPOIと違い、MS Excel に特化した100% Pure Javaのライブラリである。
オープンソースなので、使うのはタダ。(ここ重要w)
そして、100% Pure Java の名に相応しく(?)、JDKが入る環境であれば、どこでも動くっぽい。
そんなJXL。
私の第一印象は、POIに比べ、できることに対して、クラスの数が多いこと。
理由は簡単で、
・読み込み専用クラス
・読み書き両用クラス
を分けていること、そして、
・データ用クラス
・スタイル用クラス
を分けていることが、その主な理由であろう。
スタイル用クラスも、フォーマット(書式)とビジュアル(罫線や色など)を分けているのもよい。
POIを眺めていたときに思ったのだが、
Excelのオブジェクトごとにクラスを分けているだけで、
スタイルやフォーマットなどのクラスがなくて、なんだか使い勝手が悪かったように思う。
やりたいことに対して、必要なクラスがあるかどうかを探す手間は省けているものの、
やりたい機能がそのクラスにあるのか、またできるのかを確認するのが非常に面倒であった。
この辺は、私にとっては個人的に趣味に合わなかった。
そんなPOIに比べ、JXLはクラス内が非常にすっきりしているように思う。
そして、クラスが何をするものかもわかりやすいし、階層もわかりやすい。
例えば、ワークブックに対し、
・読み取り専用のWorkbookクラス
・読み書き可能なWritableWorkbookクラス
・ワークブックに対してのプロパティを設定するWorkbookSettingsクラス
の3点セットになっている。
そして、大きくみると、
Workbook
└Sheet
└Cell
という3層の構成になっている。
Row(行)やColumn(列)という単位でのCellの塊を取得することも可能であるし、
RangeオブジェクトというCellの塊のクラスも別途用意されている。
# ただし、Row/ColumnはCellの配列という形。
Cellの計算式と、その解も別に取り出すことも可能である部分も嬉しいところ。
比較的 MS Excel の OLE に近い考え方で操作ができるところもあり難い。
とはいえ、まだまだ機能が足りないのが難点。
Excelの目玉の一つであろう、グラフをコントロールできる機能が備わっていないのは、
大きな欠点だと思う。
グラフを始め、オブジェクト類があまりそろっていないのがJXLの特色ともいえる。
使えるオブジェクトは画像やハイパーリンクぐらいであろうか。
今後に期待したいなぁという思いで、今後も眺めさせてもらうことにしよう。
POIはその名の通り、ぽいっということで。(^^;)