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

図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ファイルのクラスパスを設定した画面
[画像のクリックで拡大表示]

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

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

この先は会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら