今回は、ExcelファイルをJavaから操作する方法を見ていきましょう。「Apache POI(ポイと読みます)」というJavaライブラリを使って、最新版のExcel 2010のファイルを作成・操作する方法を学びます。後半では、テキストファイルと画像ファイルから絵日記となるExcelファイルを作成するアプリケーションを作ります。

図1●作成するアプリケーションの完成画面
図1●作成するアプリケーションの完成画面
[画像のクリックで拡大表示]

 Part3では、JavaとApache POI(以下、POI)を使ったプログラミングを見ていきます。POIは、オープンソース・コミュニティのApacheソフトウエア財団が支援するプロジェクトで開発されています。POIを利用すれば、Excelのファイル以外にもWordのファイルなども操作できます。さらに、POIはオープンソースで開発されているので、だれでも自由に無償利用できます。

 本稿では、前半でPOIの概要と基本的な使い方を説明します。後半ではPOIを使ったアプリケーション「うさぎのウーちゃん絵日記」を作成していきます(図1)。作成するアプリケーションの詳細は後ほど説明しますが、テキストファイルに保存しておいた日々のうさぎの観察記録をExcelファイルに読み込んで、記録した日の写真と同じシートに張り付けて絵日記にするというツールです。それでは、POIを理解しながら一緒に作っていきましょう。

JavaからExcelファイルを操作するメリット

 POIについて学習する前に、なぜJavaからExcelを扱う必要があるのかを考えてみましょう。「ExcelなのだからJavaではなくVBA(Visual Basic for Applications)を使えばよい」と考える人がいるかもしれません。確かに、VBAを使う方が自然に感じることでしょう。

 それでも筆者は、JavaからExcelを操作すると、VBAとは違うメリットが享受できると考えています。それは、

  1. Excelの動作環境がなくてもファイルを扱える
  2. Excelの操作では難しい処理が簡単になる
の二つです。

 まず、(1)について考えてみます。POIは、Excelの使用を前提としていないため、Excelがインストールされていないパソコンでも利用できます。Excelファイルを他のファイルと同じように読み込んで、決められたフォーマット(Excelのファイルフォーマット)で解析して、ファイルを操作できます。また、ファイルを新規作成する場合には、一般的なテキストファイルを作成するように、Excelフォーマットのファイルを作成できます。ある意味、Excelの挙動をJavaによってエミュレートしているともいえるでしょう。

 「それの何がうれしいの?」と思う人もいるでしょう。実は、Excelに依存せずにExcelファイルを操作したいという需要は結構あります。例えば、Webアプリケーションの出力結果をExcelファイルで作りたいという要望です。なんだかんだいってもExcelで結果を出力する方がありがたいケースもあるわけです。

 しかし、WebアプリケーションがLinuxなどのWindows以外のプラットフォームで構築されている場合は、素直にExcelファイルを作成できません。そこで、POIの出番です。POIを使えば、Linux環境でも問題なくExcelファイルを生成できます。

 次に(2)で示した「Excelの操作では難しい処理が簡単になる」を考えてみましょう。Excelにアクセスするだけなら、わざわざJavaで操作するよりも、Visual Basic(VB)などで操作する方が簡単ですね。しかし、Excelファイルをツールから操作したい場合は、単にExcelファイルを読み書きするだけでなく、煩雑なデータ集計など、様々な処理を伴うことがほとんどでしょう。こうしたデータ集計処理などでは、VBよりもJavaを使った方が便利な場合もあるのです。

 筆者はExcelファイルを操作するツールを数多く作ってきました。ツールの中身は、ほとんどExcelファイルへのアクセス“以外”の処理だったように思います。VBよりJavaに精通している筆者の場合には、VBでExcelファイルを操作するよりもJavaを使える方がうれしいわけです。

 POIを使うとよいことばかりに思えますが、デメリットもあります。POIを利用したExcel操作には、様々な制限が伴います。その一例を挙げましょう。少し前に、Excel上でゲームを作ることが、ひっそりとはやっていた時期がありました。当然ですが、このようなゲームをPOIで動かすことはできません。POIは、実際にExcelを起動しているわけではないので、そもそもゲームを表示できないのです。ゲームのロジックを動かすまでもなく、起動すらできないわけですね。

EclipseとApache POIのインストール

 この記事では、統合開発環境のEclipseとJavaライブラリのApache POIを使います。Eclipse FoundationのWebサイト(http://www.eclipse.org/)からEclipseをダウンロードしましょう。本稿では、Eclipse IDE for Java Developersを利用しています。リンク先から、使用OSなどに合わせてZIPファイルをダウンロードします。適当なフォルダに展開すれば、インストールは完了です。Part3の説明は、日本語化したものを前提にしています。

 Eclipseがダウンロードできたら、Apache POIをEclipseに組み込みます。POIは、Webサイト(http://poi.apache.org/download.html)からダウンロードできます。Apache POIのWebサイトにアクセスできたら中ほどにある「15 December 2009 - POI 3.6 available」の「Binary Distribution」の「poi-bin-3.6-20091214.zip」をクリックします。すると、ダウンロード先ミラーサイトを選択するWebページが表示されるので、ロケーションが近いミラーを選んでダウンロードしてください。もしリンク切れなどでダウンロードできない場合は、ミラーサイトでダウンロードしてみましょう。ZIPファイルがダウンロードできたら、適当なフォルダに展開しておきます。

図A●JARファイルのクラスパスを設定した画面
図A●JARファイルのクラスパスを設定した画面
[画像のクリックで拡大表示]

 次に、Apache POIのライブラリをJavaプロジェクトのクラスパスに設定しましょう。先ほどZIPファイルを展開してできたしたフォルダ(poi-3.6というフォルダ名になると思います)のJARファイルをEclipse上のnikkeiプロジェクトにドラッグ&ドロップして、コピーします。コピーするのはpoi-3.6フォルダ以下の六つのJARファイルと、展開してできたooxml-libフォルダ内にある三つのJARファイルです。

 JARファイルをプロジェクトにコピーしたら、Ctrlキーを押しながらすべてのJARファイルを選択状態にし、右クリックして表示されるメニューから「ビルド・パス」→「ビルド・パスに追加」を選択して、これらすべてのJARファイルをクラスパスに設定してください。これで準備は完了です(図A)。