DOMでExcelファイルを参照・更新・削除するには?
それでは、Java標準のDOM操作APIを利用して「sample.xlsx」に含まれるsheet1.xmlの内容を解析します。ダウンロードして解凍したフォルダの中から、テキストエディタで「OXMLEditor.java」ファイルを開いてください。OXMLEditor.javaの処理の流れは、次のようになります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
1.Excelファイル「sample.xlsx」の解凍(27行目)
2.解凍されたsheet1.xmlファイルの読み込み(28行目)
3.「sample.xlsx」のファイルデータ全体の参照(30行目)
4.行データの挿入(31行目)
5.行データの一部更新(32行目)
6.「sample.xlsx」の4行目データの参照(33行目)
7.行データの削除(34行目)
8.行データの挿入(35行目)
9.更新されたsheet1.xmlの生成(38行目)
10.「sample.xlsx」の生成(39行目)
行データを参照するselectDataや行データを追加するinsertDataなど各関数について、順に説明します。
■ 行データの参照
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
selectDataの引数に参照したい行番号を設定します。77行目でrow要素、すなわち行のリストを取得し、78行目で行リストの中から参照したい行のデータを取得します。80行目でt要素を指定してA列のテキスト、84行目でv要素を指定してB列とC列の数値を取り出します。
■ 行データの追加
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
insertDataの引数に挿入したい行番号、A列のテキスト、B列の数値、C列の数値を順に設定します。113行目で新しい行を作成し、114〜118行目で作成した行を指定行番号に追加します。119〜121行目で、追加した行の後ろの行番号が1つずつずれているので修正します。
なお、97〜107行目の行番号指定なしのinsertDataは複数ある最後の行の次に新しい行を追加します。
■ 行データの一部更新
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
updateDataの引数に更新したい行番号、A列のテキスト、B列の数値、C列の数値を順に設定します。132行目で新しい行を作成し、133行目で古い行を新しい行に更新します。
■ 行データの削除
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
deleteDataの引数に削除したい行番号を設定します。143行目で指定行を削除し、144?146行目で、削除した行の後ろの行番号が1つずつずれているので修正します。
■ 編集後のサンプルExcelファイル
行データについて、追加、一部更新、削除が反映されたsheet1.xmlファイルを生成後、[Content_Types].xmlやworkbook.xmlなどのファイルとともにsheet1.xmlファイルをZIP圧縮すると、次のようなExcelファイルが作成されます。
標準APIでもいいが、Office操作のライブラリもある
以上で、Javaを使ってExcelデータを操作する方法についての紹介を終わりますが、いかがでしたでしょうか?
JavaでのOfficeデータ操作といえば、いままでのMicrosoft Officeがバイナリファイルだったこともあり(前回の「いまさら聞けないOfficeファイルフォーマット」参照)、これまではオープンソースフレームワークの「Apache POI 」(以下、POI)などに頼ることが多かったと思います。しかし、今後はJava標準APIで備わっているDOMやSAXでも操作できるようになり、技術者がいままで培ったXML操作のノウハウを生かしやすいと思います。
もちろん、XML操作のノウハウがない技術者でも、「Open XML4J」というJavaのOpen XML操作用オープンソースライブラリが開発中のようなので、こちらを活用するのも1つの方法だと思います(2008年8月現在ベータ版のようですが)。
また、マイクロソフトとしても、Apache Software Foundationの主要スポンサーになったことで、Officeのオープン化とともにますますオープンソース戦略を進めています。POIを含むいくつかのプロジェクトにも技術協力し、POIプロジェクトはOpen XMLのサポートもしていく予定のようです(参考:Microsoftのオープンソース計画)。
Open XMLは今後、業務システム開発において重要な位置を占めることが予想されるので、知っておいて損はないと思います。本特集が、Office Open XMLファイルフォーマットを理解する手助けになれば幸いです。
著者プロフィール
Girier 陽子(ジリエ ヨウコ)
Office Open XML標準化作業に東芝のメンバーとして参加し、標準化組織Ecma nternationalの技術委員会「TC45」で活動。共著に「入門Office Open XML」(ソフトバンククリエイティブ)。
Copyright © ITmedia, Inc. All Rights Reserved.