Office2007を使ったxml文書の作成:excelとxmlの連携
2009年03月01日作成
1page 2page 3page
大久保 修
MSはOffice 2003からXML対応機能を実装していたが、その時点ではStandard Editionでは利用できない言わばアドバンストな機能としての提供だった。それがOffice2007になってからはStandard EditionでもXML機能が使えるようになり、身近でXMLを使える環境が整った。
本稿では、構造化データの取り扱いと親和性が高いExcel2007に実装されているXML機能をご紹介する。
機能の概要
Excel 2007には、XML スキーマの各要素をワークシート上のセルと対応付けることにより、ワークシート上に XML ファイルのデータをインポートしたり、ワークシート上で入力したデータをXMLファイルにエクスポートすることができる。
オプションの設定~XML機能の有効化
Excel 2007 の初期状態では、XMLに関する機能が非表示になっているので、まず以下の操作を行ってXML機能が使えるようにする必要がある。
(1) Excel2007のウィンドウの左上隅にある[Officeボタン] をクリックし、[Excelのオプション] ボタンをクリックする。
(2) [基本設定]の中の、“[開発]タブをリボンに表示する”というチェックボックスをONにする。
(3) メニューに [開発] タブが表示され、XML機能が使えるようになる。
XMLスキーマとインスタンスの準備
さて、これでExcel2007でXML機能を使う準備ができた。次にExcel2007で扱いたいXMLを用意することになる。今回は「支店別社員名簿」のXMLデータをサンプルとして用いることにする。
「支店別社員名簿」のサンプルインスタンス
<?xml version="1.0" encoding="UTF-8"?>
<支店別社員名簿
xmlns="http://www.utj.co.jp/employees-list"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.utj.co.jp/employees-list 社員名簿.xsd"
>
<支店情報>
<支店名>虎ノ門支店</支店名>
<郵便番号>105-0001</郵便番号>
<住所>東京都港区虎ノ門3-8-27</住所>
<電話番号>03-5733-7611</電話番号>
</支店情報>
<社員>
<氏名 フリガナ="オオクボ オサム">大久保 修</氏名>
<所属部署名>システム開発</所属部署名>
<住所>東京都○○区○○4-5-6</住所>
<電話番号>03-YYYY-ZZZZ</電話番号>
</社員>
<社員>
<氏名 フリガナ="アベ ミノブ">安部 みのぶ</氏名>
<所属部署名>総合研究所</所属部署名>
<住所>東京都○○区○○1-2-3</住所>
<電話番号>03-XXXX-YYYY</電話番号>
</社員>
</支店別社員名簿>
これに対応するスキーマは以下の通り。
「支店別社員名簿」のXMLスキーマ
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.utj.co.jp/employees-list"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.utj.co.jp/employees-list"
>
<xs:element name="支店別社員名簿">
<xs:complexType>
<xs:sequence>
<xs:element ref="支店情報"/>
<xs:element ref="社員" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="支店情報">
<xs:complexType>
<xs:sequence>
<xs:element ref="支店名"/>
<xs:element ref="郵便番号"/>
<xs:element ref="住所"/>
<xs:element ref="電話番号"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="社員">
<xs:complexType>
<xs:sequence>
<xs:element ref="氏名"/>
<xs:element ref="所属部署名"/>
<xs:element ref="住所"/>
<xs:element ref="電話番号"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="氏名">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="フリガナ" type="xs:string" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="支店名" type="xs:string"/>
<xs:element name="郵便番号" type="xs:string"/>
<xs:element name="住所" type="xs:string"/>
<xs:element name="電話番号" type="xs:string"/>
<xs:element name="所属部署名" type="xs:string"/>
</xs:schema>