ホーム  > X-plus >  XML活用事例

この記事を印刷する この記事を送る はてなブックマークに追加する
テキストリンクコードを取得する

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>

 1page  2page  3page 

この記事と関連の高い記事

関連キーワード:XML


関連キーワード:連携




ページトップへ戻る