Excelを例にパッケージの中をのぞいてみよう
SpreadsheetMLは、表計算ドキュメントを電子ファイルとして保存するためのOpen XMLです。SpreadsheetMLドキュメントのパッケージはブックパーツやワークシートパーツと、各パーツへの参照関係を定義したファイルなどから構成されます。ワークシートが1つのシンプルなExcelファイル「サンプル.xlsx(sample.xlsx)」を例に考えます。
パッケージには次の5つのファイルが含まれます。
- 各パーツの種類を定義するファイル:/[Content_Types].xml
- パッケージからメインのパーツ(ブックパーツ)への参照情報のファイル:/_rels/.rels
- メインのパーツファイル(ブックパーツ):/xl/workbook.xml
- メインのパーツ(ブックパーツ)から各パーツ(ワークシートパーツ)への参照情報のファイル:/xl/_rels/workbook.xml.rels
- パーツファイル(ワークシートパーツ):/xl/worksheets/sheet1.xml
サンプルファイルのフォルダ構成は、以下のようになります。
■ [Content_Types].xml
[Content_Types].xmlファイルでは、Excelファイルを構成する各パーツの種類を定義します。なお、ファイル名は括弧「[」で始まり、拡張子の前に閉じ括弧「]」があります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
5行目でブックパーツについて、6行目でワークシートパーツについてそれぞれPartNameでパーツ名を、ContentTypeでパーツの種類を定義しています。
■ .rels
.relsファイルでは、パッケージからブックパーツへの参照情報を定義します。なお、ファイル名はドット「.」で始まります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
3行目のTarget属性で、パッケージからブックパーツworkbook.xmlへの参照を定義しています。
■ workbook.xml(ブックパーツ)
workbook.xmlファイルでは、ブックの定義を行います。ブックは1つまたは複数のワークシートを含み、グラフやオプションのパーツなど、さまざまな関連情報をまとめて管理します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
4行目でブックに含まれているワークシートへの参照を定義します。name属性でワークシートの名称Sheet1を定義し、id属性でワークシートパーツの保存先を参照しています。
■ workbook.xml.rels
workbook.xml.relsファイルでは、ブックパーツからワークシートパーツへの参照情報を定義します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
3行目のId属性はブックパーツworkbook.xmlから参照されており、同じく3行目のTarget属性はワークシートパーツsheet1.xmlへの参照を定義しています。
■ sheet1.xml(ワークシートパーツ)
sheet1.xmlファイルでは、ワークシートの定義を行います。なお、ワークシートを複数定義するときは、ワークシートごとにsheet2.xml、sheet3.xmlというように保存します。ワークシートは行と列から構成されたセルの集まりで、データの入力や編集に使われます。セルにはテキスト、数値、日付、数式などを含むことができます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
3〜17行目のsheetData要素でセルのテーブル定義をします。HTMLの<table>タグと同様です。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
4行目row要素でテーブルの行を、r属性でワークシートの何行目かを指定します。5行目c要素で列を、r属性でセルを指定します。row要素とc要素はHTMLの
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
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」(ソフトバンククリエイティブ)。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 『POIを使用してJavaからExcelデータを読み込む』
- 『POIを使用してExcelの書式を設定する』
- 『POIを使用してJavaからExcel出力を行う』
- 今さら人に聞けないJavaとXMLの関係「JavaとXMLはなぜ仲良し?」
- Javaを紐解くための重点キーワード
- JAXP(Java API for XML Parsing)
- 第1回 必要なのはJava2SEとXMLパーサ
- 第2回 初めてJavaでXML文書を操作してみる
- 第3回 JavaによるDOMプログラムの実例
- 第4回 SAXによるシンプルなXML文書の操作
- 第5回 階層構造を持つXML文書をSAXで処理する
- 前編 Java XML PackのAPI群
- 後編 Apache XML Projectが提供するXMLツール群
Java Agile 記事ランキング
- Spring Bootプロジェクトを素早く作成できる「Spring Initializr」の使い方
- 「Spring」「Spring Boot」「Spring Framework」、それぞれの特徴とは
- Spring BootとSpring MVCの違い 両者の特徴と使い分けのポイントとは
- Springにおける「RestController」と「Controller」の違いとは
- アジャイル環境で必須 ビジネス要件定義書(BRD)を作成する際のポイント
- Spring Bootユーザーなら知っておきたい「Spring Boot Actuator」 本番環境での運用時にどう役立つ?
- 企業のアジャイル化に「CoE」は不可欠? アジャイルCoEの基本から適用方法まで解説
- 「Spring Framework」と「Spring Boot」の違い Spring Bootが「こだわりのある」フレームワークな理由
- 一見それほど変わらないように思えるKotlinとScala、どう使い分けるべき?
- 2024年6月現在、本稼働環境のアプリで最も利用されているのは「Java 17」 New Relicがレポートを発表