検索
連載

最新ExcelフォーマットをJavaで操作するための基礎XMLを取り込んだ最新Officeフォーマットとは(後編)(1/2 ページ)

PC用表示 関連情報
Share
Tweet
LINE
Hatena

XMLを取り込んだExcelならJava標準APIで操作できる!

 本特集は、「Office 2007」よりファイル形式として使われている「Office Open XML」ファイルフォーマット(以下、Open XML)について解説をする特集記事です。前編の「Officeファイルの成り立ちと最新形、そして標準化」では、XMLを取り込んだOpen XMLの成り立ちやOpenOfficeとの比較、標準化の流れ、仕様の概要について紹介しました。

 後編は、Excelを例にJavaで最新Officeフォーマットファイルのデータを操作する方法を紹介します。まず、ワークシートが1つで、テキストと数値の行を入力したシンプルなExcelファイルを作成してみます。次に、DOM操作用のJava標準APIである「org.w3c.dom」「javax.xml.parsers」「javax.xml.transform」パッケージなどを使って、作成したExcelファイルの各行を参照したり、データをさらに追加したり、データの一部更新、削除など行ってみます。

 Java標準APIによるXML操作の基本を知りたい読者は、少し情報が古いですが、以下の連載を参考にしてください。

サンプルExcelファイルを見てみよう

 今回最初に作成するExcelファイルのサンプルは、図1のようになります。

図1 今回作成するサンプルのExcelファイル
図1 今回作成するサンプルのExcelファイル

 A列:テキストデータ、B列:数値、C列:数値からなる行を入力してみます。ソースコードのフォルダ構成は、次のようになります。

図1 OpenOffice.org日本語サイト
図2 ソースコードのフォルダ構成

 まずは、図2のソースコードをこちらよりダウンロードしておいてください。

サンプルプログラムの注意事項

 本稿のサンプルプログラムについては、以下の注意事項がありますので、気を付けてください。

  • Java動作確認環境は、JDK 6 Update 5ですJDK 6 Update 5です
  • Office 2007でdocx/xlsx/pptxサンプルファイルの編集や保存を行うと、元のサンプルにないコードが挿入されます
  • テキストエディタでサンプルのXMLファイルを編集する場合、文字コードをUTF-8に設定してください。エンコーディングが正しく設定されないと、Office 2007でdocx/xlsx/pptxファイルが開けない場合があります文字コードUTF-8に設定してください。エンコーディングが正しく設定されないと、Office 2007でdocx/xlsx/pptxファイルが開けない場合があります
  • プログラムをコンパイルする際、コンパイル環境がUTF-8ではない場合、『javac -encoding UTF-8 OXMLCreator.java』のように、コンパイル時に文字コード(エンコーディング)を指定してくださいコンパイルする際、コンパイル環境がUTF-8ではない場合、『javac -encoding UTF-8 OXMLCreator.java』のように、コンパイル時に文字コード(エンコーディング)を指定してください
  • サンプルファイルは読み取り専用になっています。必要に応じ、解除してください読み取り専用になっています。必要に応じ、解除してください
  • サンプルプログラムは自己責任によりご利用ください

 Javaの文字エンコーディングについて詳しく知りたい読者は、以下の記事を参考にしてください。

Open XMLのExcelファイルを作成するには?

 ダウンロードして解凍したフォルダの中から、テキストエディタでOpen XMLのExcelファイルを作成する「OXMLCreator.java」ファイルを開いてください。OXMLCreator.javaの処理の流れは、次のようになります。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

  1. sheet1.xmlファイルに書き込む内容をStringBufferへ保存(23?27行目)
  2. 1.で保存したデータからsheet1.xmlファイルを生成(28行目)
  3. あらかじめ保存しておいた[Content_Types].xmlやworkbook.xmlなどのファイルとともにsheet1.xmlファイルをZIP圧縮し、sample.xlsx生成(29行目)

 Java標準APIによるZIP圧縮について詳しく知りたい読者は、以下の記事を参考にしてください。

sample.xlsxに含むファイルの構成を決める

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 16〜20行目でZIPファイル(sample.xlsx)に含むファイルのファイル名とパスを追加します。

行データの追加

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 insertDataの引数に順に設定したA列のテキスト、B列の数値、C列の数値をそれぞれStringBuffer型のsheetContent変数へ行データ1行分のデータとして保存します。41〜45行目でA列、46?48行目でB列、49?51行目でC列を設定します。

sheet1.xmlの生成

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 StringBuffer型のsheetContent変数へ保存したデータからsheet1.xmlファイルを生成します。63行目でsheet1.xmlの文字コードを「UTF-8」に設定します。なお、Open XMLでサポートされている文字コードは、「Unicode」(「UTF-8」または「UTF-16」)および「ISO/IEC 10646」です。

 sheet1.xmlファイルを生成後、あらかじめ保存しておいた[Content_Types].xmlやworkbook.xmlなどのファイルとともにsheet1.xmlファイルをZIP圧縮すると、図1のようなExcelファイルが作成されます。

 次ページでは、今回作成したサンプルExcelファイル「sample.xlsx」の行データについて、参照、追加、一部更新、削除を行ってみます。

Copyright © ITmedia, Inc. All Rights Reserved.

       | 次のページへ
ページトップに戻る