仕事でアプリケーションを作った際に、XML からデータを読み込めるようにしました。
しかし、XML の編集はできる人が限られてしまうので、エクセルで XML ファイルのデータを編集できるようにしてみました。
用意するアプリ
- Excel 2010。
- XML スキーマファイル(*.xsd)を作れるアプリケーション。
前準備
Excel 2010 の「開発」タブを使えるようにしておきます。
「開発」タブを表示する方法は以下を参照のこと。
[開発] タブを表示する - Outlook - Microsoft Office
http://office.microsoft.com/ja-jp/outlook-help/HA101819080.aspx
任意のワークブック(*.xlsx)で XML データを編集できるようにする。
まずは任意のワークブックで XML のデータを編集できるようにします。
ひな形となる XML ファイルを作る。
まずは、ひな形となる 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 > スキーマの作成」を選択します。
すると、以下の様な 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 > ソース」をクリックします。
すると、右側に「XML ソース」ウィンドウが表示されます。
このウィンドウの「XML の対応付け」ボタンを押します。
すると、以下の様なダイアログが表示されます。
このダイアログの「追加」ボタンを押して、先ほど作った XML スキーマファイルを読み込みます。
読み込んでこのダイアログに戻ってきたら「OK」ボタンを押します。
ダイアログを閉じると、先ほどの「XML ソース」ウィンドウに XML スキーマファイルに記述されていた要素が表示されます。
ここに表示されている要素を選択して、セルにドラッグするとそのセルと要素が対応付けられます。
関連付けた例を以下に表示します。
この例では、以下の様な対応付けがされています。
- 「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 のデータがセルに読み込まれます。
**「root/items/items」**の数に応じて、対応付けの範囲も自動的に調整されています。
読み込んだデータをエクセル上で編集する
編集は、対応付けされたセルの中身を書き換えるだけです。
値はもちろん、**「root/items/item」**の数も変更してみました。
編集したデータを XML ファイルとして出力する
では、この編集結果を XML ファイルとして出力してみましょう。
「開発」タブの「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/