最新Excelフォーマットを
Javaで操作するための基礎
特集:XMLを取り込んだ最新Officeフォーマットとは?(後編)
株式会社 東芝 ソフトウェア技術センター
Girier 陽子
2008/8/18
DOMでExcelファイルを参照・更新・削除するには?
それでは、Java標準のDOM操作APIを利用して「sample.xlsx」に含まれるsheet1.xmlの内容を解析します。ダウンロードして解凍したフォルダの中から、テキストエディタで「OXMLEditor.java」ファイルを開いてください。OXMLEditor.javaの処理の流れは、次のようになります。
27 oxml.unzip("sample.xlsx"); /* sample.xlsxの解凍 */ |
- Excelファイル「sample.xlsx」の解凍(27行目)
- 解凍されたsheet1.xmlファイルの読み込み(28行目)
- 「sample.xlsx」のファイルデータ全体の参照(30行目)

図3 編集前のデータ - 行データの挿入(31行目)

図4 2行目に新しい行を挿入 - 行データの一部更新(32行目)

図5 3行目のデータを更新 - 「sample.xlsx」の4行目データの参照(33行目)
- 行データの削除(34行目)

図6 4行目のデータを削除 - 行データの挿入(35行目)

図7 4行目に新しい行を追加 - 更新されたsheet1.xmlの生成(38行目)
- 「sample.xlsx」の生成(39行目)
行データを参照するselectDataや行データを追加するinsertDataなど各関数について、順に説明します。
■ 行データの参照
74 void selectData(int rowNum){ |
selectDataの引数に参照したい行番号を設定します。77行目でrow要素、すなわち行のリストを取得し、78行目で行リストの中から参照したい行のデータを取得します。80行目でt要素を指定してA列のテキスト、84行目でv要素を指定してB列とC列の数値を取り出します。
■ 行データの追加
/* 指定行に行挿入 */ |
insertDataの引数に挿入したい行番号、A列のテキスト、B列の数値、C列の数値を順に設定します。113行目で新しい行を作成し、114〜118行目で作成した行を指定行番号に追加します。119〜121行目で、追加した行の後ろの行番号が1つずつずれているので修正します。
なお、97〜107行目の行番号指定なしのinsertDataは複数ある最後の行の次に新しい行を追加します。
■ 行データの一部更新
127 void updateData(int rowNum, String a, int b, int c){ |
updateDataの引数に更新したい行番号、A列のテキスト、B列の数値、C列の数値を順に設定します。132行目で新しい行を作成し、133行目で古い行を新しい行に更新します。
■ 行データの削除
139 void deleteData(int rowNum){ |
deleteDataの引数に削除したい行番号を設定します。143行目で指定行を削除し、144〜146行目で、削除した行の後ろの行番号が1つずつずれているので修正します。
■ 編集後のサンプルExcelファイル
行データについて、追加、一部更新、削除が反映されたsheet1.xmlファイルを生成後、[Content_Types].xmlやworkbook.xmlなどのファイルとともにsheet1.xmlファイルをZIP圧縮すると、次のようなExcelファイルが作成されます。
![]() |
| 図8 編集後のサンプル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ファイルフォーマットを理解する手助けになれば幸いです。
■ @IT関連記事
- Java TIPS 『POIを使用してJavaからExcelデータを読み込む』
- Java TIPS 『POIを使用してExcelの書式を設定する』
- Java TIPS 『POIを使用してJavaからExcel出力を行う』
| 今さら人に聞けないJavaとXMLの関係 「JavaとXMLはなぜ仲良し?」 XMLを扱うサーバ製品や処理ツールに、なにかとJavaが取り上げられる。なぜだろうか? その理由と、XMLをハンドリングするツールの基礎知識をお教えしよう 「Java
Solution」フォーラム 2001/1/11 |
||
| Javaを紐解くための重点キーワード Javaを学習する上で必ず必要となるキーワードを取り上げ、短時間で理解できることを目的とした用語解説を行っていきます。 ・JAXP(Java API for XML Parsing) |
||
| XML関連Javaテクノロジーの現在 Apache Software Foundationでは、Xalan、Cocoon、Xercesなどのソフトウェアを開発している。最新情報をまとめて解説する 前編 Java XML PackのAPI群 後編 Apache XML Projectが提供するXMLツール群 「XML & SOA」フォーラム 2001/12/27 |
||
| プロフィール |
| Girier 陽子(ジリエ ヨウコ) 株式会社 東芝 ソフトウェア技術センター 先端ソフトウェア開発担当グループ所属 Office Open XML標準化作業に東芝のメンバーとして参加し、標準化組織Ecma Internationalの技術委員会「TC45」で活動。共著に「入門Office Open XML」(ソフトバンククリエイティブ)。 |
| |
1-2 |
| INDEX | ||
| Page1 | ||
| XMLを取り込んだExcelならJava標準APIで操作できる! Open XMLのExcelファイルを作成するには? |
||
| Page2 | ||
| DOMでExcelファイルを参照・更新・削除するには? 標準APIでもいいが、Office操作のライブラリもある |
||
XMLを取り込んだ最新Officeフォーマットとは バックナンバー 連載インデックスへ»
- 第1回 Officeファイルの成り立ちと最新形、そして標準化
- 最終回 最新ExcelフォーマットをJavaで操作するための基礎
| Java Solution全記事一覧 |
TechTargetジャパン
- 並列分散処理の常識をHadoopファミリから学ぶ (2012/2/8)
並列分散処理の課題やHadoopの長所/短所、そして短所を補うHadoop関連プロジェクトの構成や概要などを簡単に紹介 - WebLogicサーバ最新版「12c」の気になる4つの特徴 (2012/1/31)
久々にメジャーアップグレードしたJavaアプリケーションサーバについて、製品担当者に軽量インストーラなどの特徴を聞いた - GitHubをもっとソーシャルに使いこなすための7つ道具 (2012/1/23)
ソースコードホスティングのGitHub周辺で便利な新サービスが続々登場しているので、まとめて紹介しよう。特に連動クラウド「fluxflex」が注目だ - 新キャラ登場!スクラムやるならRedmineとALMinium (2011/12/26)
「黒板を“かんばん”にしてたら先生に怒られた(T_T)」「管理はPC内でやればいいのよ」「承知しました」
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -

