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はその名の通り、ぽいっということで。(^^;)