連載
» 2008年07月22日 00時00分 公開

XMLを取り込んだ最新Officeフォーマットとは(前編):Officeファイルの成り立ちと最新形、そして標準化 (2/2)

[Girier陽子,株式会社 東芝 ソフトウェア技術センター]
前のページへ 1|2       

Excelを例にパッケージの中をのぞいてみよう

 SpreadsheetMLは、表計算ドキュメントを電子ファイルとして保存するためのOpen XMLです。SpreadsheetMLドキュメントのパッケージはブックパーツやワークシートパーツと、各パーツへの参照関係を定義したファイルなどから構成されます。ワークシートが1つのシンプルなExcelファイル「サンプル.xlsx(sample.xlsx)」を例に考えます。

図5 ExcelファイルのサンプルをOffice 2007で開いたところ 図5 ExcelファイルのサンプルをOffice 2007で開いたところ

 パッケージには次の5つのファイルが含まれます。

  1. 各パーツの種類を定義するファイル:/[Content_Types].xml
  2. パッケージからメインのパーツ(ブックパーツ)への参照情報のファイル:/_rels/.rels
  3. メインのパーツファイル(ブックパーツ):/xl/workbook.xml
  4. メインのパーツ(ブックパーツ)から各パーツ(ワークシートパーツ)への参照情報のファイル:/xl/_rels/workbook.xml.rels
  5. パーツファイル(ワークシートパーツ):/xl/worksheets/sheet1.xml

 サンプルファイルのフォルダ構成は、以下のようになります。

図6 サンプルファイルのフォルダ構成 図6 サンプルファイルのフォルダ構成

[Content_Types].xml

 [Content_Types].xmlファイルでは、Excelファイルを構成する各パーツの種類を定義します。なお、ファイル名は括弧「[」で始まり、拡張子の前に閉じ括弧「]」があります。

[Content_Types].xml
1 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2 <Types xmlns="http://schemas.openxmlformats.org/package/2006/content
-types">
3   <Default Extension="rels" ContentType="application/vnd.openxmlform
ats-package.relationships+xml"/>
4   <Default Extension="xml" ContentType="application/xml"/>
5   <Override PartName="/xl/workbook.xml" ContentType="application/vnd
.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>
6   <Override PartName="/xl/worksheets/sheet1.xml" 
      ContentType="application/vnd.openxmlformats-officedocument.sprea
dsheetml.worksheet+xml"/>
7 </Types>

 5行目でブックパーツについて、6行目でワークシートパーツについてそれぞれPartNameでパーツ名を、ContentTypeでパーツの種類を定義しています。

.rels

 .relsファイルでは、パッケージからブックパーツへの参照情報を定義します。なお、ファイル名はドット「.」で始まります。

_rels/.rels
1 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2 <Relationships xmlns="http://schemas.openxmlformats.org/package/2006
/relationships">
3   <Relationship Id="rId1" Target="xl/workbook.xml"
      Type="http://schemas.openxmlformats.org/officeDocument/2006/rela
tionships/officeDocument"/>
4 </Relationships>

 3行目のTarget属性で、パッケージからブックパーツworkbook.xmlへの参照を定義しています。

図7 パッケージからブックパーツworkbook.xmlへの参照 図7 パッケージからブックパーツworkbook.xmlへの参照

workbook.xml(ブックパーツ)

 workbook.xmlファイルでは、ブックの定義を行います。ブックは1つまたは複数のワークシートを含み、グラフやオプションのパーツなど、さまざまな関連情報をまとめて管理します。

xl/workbook.xml
1 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2 <workbook
    xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"
    xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/re
lationships">
3   <sheets>                               
4     <sheet name="Sheet1" sheetId="1" r:id="rId1"/> 
      <!--ワークシートへの参照情報-->
5   </sheets>                               
6 </workbook>

 4行目でブックに含まれているワークシートへの参照を定義します。name属性でワークシートの名称Sheet1を定義し、id属性でワークシートパーツの保存先を参照しています。

workbook.xml.rels

 workbook.xml.relsファイルでは、ブックパーツからワークシートパーツへの参照情報を定義します。

xl/_rels/workbook.xml.rels
1 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2 <Relationships xmlns="http://schemas.openxmlformats.org/package/2006
/relationships">
3   <Relationship Id="rId1" Target="worksheets/sheet1.xml"
      Type="http://schemas.openxmlformats.org/officeDocument/2006/rela
tionships/worksheet"/>
4 </Relationships>

 3行目のId属性はブックパーツworkbook.xmlから参照されており、同じく3行目のTarget属性はワークシートパーツsheet1.xmlへの参照を定義しています。

図8 ブックパーツworkbook.xmlからワークシートパーツsheet1.xmlへの参照 図8 ブックパーツworkbook.xmlからワークシートパーツsheet1.xmlへの参照

sheet1.xml(ワークシートパーツ)

 sheet1.xmlファイルでは、ワークシートの定義を行います。なお、ワークシートを複数定義するときは、ワークシートごとにsheet2.xml、sheet3.xmlというように保存します。ワークシートは行と列から構成されたセルの集まりで、データの入力や編集に使われます。セルにはテキスト、数値、日付、数式などを含むことができます。

xl/worksheets/sheet1.xml
 1 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 2 <worksheet
     xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/mai
n">
 3   <sheetData>
 4     <row r="1">                                     <!--1行目-->
 5       <c r="A1" t="inlineStr">            <!--(セルA1)1列目-->
 6         <is>
 7           <t>製品名</t>
 8         </is>
 9       </c>

10       <c r="B1">                          <!--(セルB1)2列目-->
11         <v>12</v>
12       </c>

13       <c r="C1">                          <!--(セルC1)3列目-->
14         <v>400</v>
15       </c>

16     </row>
17   </sheetData>
18 </worksheet>

 3〜17行目のsheetData要素でセルのテーブル定義をします。HTMLの<table>タグと同様です。

 4     <row r="1">                                     <!--1行目-->
 5       <c r="A1" t="inlineStr">            <!--(セルA1)1列目-->

 :
 :

 9       </c>

 4行目row要素でテーブルの行を、r属性でワークシートの何行目かを指定します。5行目c要素で列を、r属性でセルを指定します。row要素とc要素はHTMLのタグやタグ同様です。セルの指定は、A、B、C、……で1列、2列、3列、……を、1、2、3、……で1行、2行、3行、……を表します。上記サンプル5行目では1行1列目、すなわちA1のセルを指定しています。

 6         <is>
 7           <t>製品名</t>
 8         </is>

 6行目is要素で文字列を子要素に持つことを定義し(※注意2)、7行目t要素でテキストを定義します。セルへ数値を表示する場合は、11行目のようにv要素で数値を定義します。

※注意2:Office2007を使って文字を入力すると、is要素は用いずに「共有文字列テーブル」という重複している文字列のデータをまとめて管理するフォーマットで保存される

後編はJavaでXMLのExcelデータを操作

 簡単ですが、以上でOpen XMLについての紹介を終わります。後編では、Javaを使ってXMLのExcelデータを操作する方法を紹介しますので、どうぞお楽しみに。

著者プロフィール

Girier 陽子(ジリエ ヨウコ)

Office Open XML標準化作業に東芝のメンバーとして参加し、標準化組織Ecma nternationalの技術委員会「TC45」で活動。共著に「入門Office Open XML」(ソフトバンククリエイティブ)。



前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。