Javaを使って普段の仕事をラクにするツールを作っていくこの連載。第3回は,おなじみの表計算ソフトExcelをJavaからどう扱うかを説明します。簡単な家計簿ツールの作成を通じて,JavaによるExcel操作の基礎を習得していくことにしましょう。

こちらからサンプルプログラムをダウンロードできます。

 皆さん,こんにちは! kikainekoです。この連載では,日々の定型的な業務をJavaで自動化してラクする方法を紹介しています。今回は,皆さんが仕事でもっともよく使用していると思われる,ExcelファイルをJavaから操作してみましょう!

 「ExcelにはVBA(Visual Basic for Applications:ExcelやWordなどMicrosoft Officeのマクロ言語)があるのに,わざわざJavaから操作する必要があるの?」と思われるかもしれません。確かに,Excelへのアクセスのしやすさだけを考えると,VBAのほうが簡単でしょう。とりわけ,VBAが持つマクロの記録・再生機能は強力です。

 それでも筆者は,Excelファイルにアクセスする場合,VBAよりもJavaのほうが便利だと考えています。なぜでしょうか。「Excelを操作する」という処理の内容を考えてみましょう。多くの場合,それは「Excelファイルから値を取り出し,加工して集計する」ことを意味します。

 VBAは,「Excelファイルから値を取り出す」という前半の処理は得意です。ところが,「加工して集計する」という後半の処理が非常に苦手です。実は,処理が難しいのは後半の加工・集計処理だったりします。このため,Excelファイルへのアクセスが少々難しいとしても,結果的に後半の処理をラクにできるJavaを利用することになるわけです。VBAでは,複数のExcelファイルを同時に処理するのも少し苦手ですしね。

 Excelの外部からExcelを操作できるようになると,作業のかなりの部分を軽減できるという利点もあります。例えば,Excelからソースコードを自動生成する,Excelからデータを取得・加工して別のExcelファイルに転記するなど,様々な場面で使用できます。筆者もこういった技術のおかげで,かなりラクをさせてもらっています。皆さんも,さらにラクできる技を身につけてしまいましょう!

Jakarta POIを使ってExcelを操作する

 JavaからExcelを操作する方法は,いくつかあります。この連載では,手軽に(つまりタダで)使えて,もっとも普及している「Jakarta POI(ポイと読みます)」を利用して,ポイポイっとExcelを操作できるようにしていきます(POIのインストール方法は,本文末のカコミ記事POIをインストールしよう」を参照)。

 POIは,ExcelファイルやWordファイルといった,Microsoft Office形式*1のファイルをJavaで扱うためのライブラリです。その機能は非常に多岐にわたっており,この誌面ではとてもすべてを紹介しきれません。ここでは,POIを使ってExcelをどのように操作するかに話を絞って,一緒に見ていくことにしましょう!

 作成するサンプルは,お手軽な「家計簿ツール」です。Excelファイルに書かれた「光熱費=20000」のようなデータを加工して,家計簿の出費の合計を計算します(図1)。ついでに,その計算結果を同じExcelファイルに書き込むことにします。

図1●作成する家計簿ツールのイメージ
図1●作成する家計簿ツールのイメージ

 では,さっそくツールの作成に取り掛かりましょう,と言いたいところですが,いきなり始めても訳が分からなくなってしまうでしょう。まずは,ツールを作るうえで押さえるべきポイントを説明します。すなわち,どうやってJavaからExcelを操作するのか。言い換えると,「POIをどう使えばよいか」ですね。

 POIを使ってExcelファイルを操作するためには,以下の三つを知っておく必要があります。

(1)HSSFクラス群の構成
(2)Excelの基本的な操作方法
(3)有効範囲

 HSSF(Horrible Spread Sheet Format)とは,POIが提供する,Excelファイルを操作するためのクラス群のことです。あとで詳しく解説します。文章だけで説明してもピンと来ないかもしれませんので,サンプル・コードのリスト1を使いながら解説を進めます。

リスト1●Excelファイルから値を取り出して表示する
[画像のクリックで拡大表示]

 リスト1は,Excelファイルから値を取り出して表示するサンプルです。基本的な処理の流れについては,吹き出しのコメントを参照してください。サンプルなので例外処理などは省略しています。

 このサンプルを実行する前に,「B3」のセルに「test」という文字を記入した「sample.xls」というファイルを用意してください。行やセルは,すべて最初を「0番目」と数える点に注意しましょう。つまりリスト1は,行としては「上から2番目(すなわち3行目),セルとしては「左から1番目(すなわち二つ目)」の「B3」セルの値を表示するサンプルになっています。少しややこしいかもしれませんね。

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

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