Excel 2010 を使って XML ファイルを編集する

  • 30
    Like
  • 0
    Comment
More than 1 year has passed since last update.

仕事でアプリケーションを作った際に、XML からデータを読み込めるようにしました。
しかし、XML の編集はできる人が限られてしまうので、エクセルで XML ファイルのデータを編集できるようにしてみました。

用意するアプリ

  1. Excel 2010。
  2. XML スキーマファイル(*.xsd)を作れるアプリケーション。

前準備

Excel 2010 の「開発」タブを使えるようにしておきます。
「開発」タブを表示する方法は以下を参照のこと。

[開発] タブを表示する - Outlook - Microsoft Office
http://office.microsoft.com/ja-jp/outlook-help/HA101819080.aspx

任意のワークブック(*.xlsx)で XML データを編集できるようにする。

まずは任意のワークブックで XML のデータを編集できるようにします。

ひな形となる XML ファイルを作る。

まずは、ひな形となる XML ファイルを用意します。
今回はこのようなひな形を用意しました。

test.xml
<?xml version = "1.0" encoding = "utf-8"?>
<root>
  <title>title</title>
  <items>
    <item>
      <id>id1</id>
      <name>name1</name>
      <command>command1</command>
    </item>
    <item>
      <id>id2</id>
      <name>name2</name>
      <command>command2</command>
    </item>
  </items>
</root>

ひな形から、XML スキーマファイル(*.xsd)を作る。

次に、XML スキーマファイルを作成します。
スキーマファイルとは、XML の構造が記述されているファイルです。

Visual Studio の Professional 以上には、XML から XML スキーマファイルを作成するための機能がありますので、今回はそれを使います。

まず、Visual Studio でひな形となる XML ファイルを読み込みます。

次に、メニューの「XML > スキーマの作成」を選択します。
select_xml_schema.png

すると、以下の様な xsd ファイルが自動的に作成されます。

test.xsd
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="root">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="title" />
        <xs:element name="items">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" name="item">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="id" />
                    <xs:element name="name" />
                    <xs:element name="command" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

この時点ではまだファイルとして保存されていないので、「名前をつけて保存」で保存します。

エクセルのワークシートのセルに XML の要素を対応付ける。

先ほど作った XML スキーマファイルを使って、エクセルのワークシートに XML の要素を対応付けします。

まず、エクセルで任意のファイルを開きます。

次に、「開発」タブの「XML > ソース」をクリックします。
select_xml_source.png

すると、右側に「XML ソース」ウィンドウが表示されます。
show_xml_source.png


このウィンドウの「XML の対応付け」ボタンを押します。
すると、以下の様なダイアログが表示されます。
show_xml_association.png


このダイアログの「追加」ボタンを押して、先ほど作った XML スキーマファイルを読み込みます。
読み込んでこのダイアログに戻ってきたら「OK」ボタンを押します。

ダイアログを閉じると、先ほどの「XML ソース」ウィンドウに XML スキーマファイルに記述されていた要素が表示されます。
xml_source_association.png

ここに表示されている要素を選択して、セルにドラッグするとそのセルと要素が対応付けられます。
関連付けた例を以下に表示します。

xml_cell_association.png

この例では、以下の様な対応付けがされています。

  • 「root/title」「A1」
  • 「root/items/item/id」「A3~A4」
  • 「root/items/item/name」「B3~B4」
  • 「root/items/item/command」「C3~C4」

「root/items/item」の数は、「C4」の右下の【」】を下にドラッグすることで増やすことができます。

これでこのワークブックを使って XML データの編集が出来る状態となりました。

XML ファイルからデータを読み込む

では、先ほどの XML ファイルのひな形からワークブックにデータを読み込んでみましょう。

「開発」タブの「XML > インポート」をクリックします。
select_xml_import.png

そこから先ほどのひな形を選択してインポートします。
すると、対応付けに応じて XML のデータがセルに読み込まれます。
imported_xml.png

「root/items/items」の数に応じて、対応付けの範囲も自動的に調整されています。

読み込んだデータをエクセル上で編集する

編集は、対応付けされたセルの中身を書き換えるだけです。

例として、以下のように編集してみます。
xml_changed.png

値はもちろん、「root/items/item」の数も変更してみました。

編集したデータを XML ファイルとして出力する

では、この編集結果を XML ファイルとして出力してみましょう。

「開発」タブの「XML > エクスポート」をクリックします。
select_xml_export.png

そこから出力先を指定して、エクスポートします。
先ほど編集したものをエクスポートした結果は以下のとおりです。

test2.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
  <title>title2</title>
  <items>
    <item>
      <id>id3</id>
      <name>name3</name>
      <command>command3</command>
    </item>
    <item>
      <id>id4</id>
      <name>name4</name>
      <command>command4</command>
    </item>
    <item>
      <id>id5</id>
      <name>name5</name>
      <command>command5</command>
    </item>
  </items>
</root>

これで無事に XML のデータを編集することが出来ました。

参考サイト

XML データをエクスポートする - Excel - Microsoft Office
http://office.microsoft.com/ja-jp/excel-help/HP010206401.aspx

Excel(CSV)からXMLへの変換(エクスポート)方法
http://www.saka-en.com/office/excel-export-to-xml/