Excel(CSV)からXMLへの変換(エクスポート)方法
Excel(CSV)からXMLへの変換(エクスポート)方法です。
Excel で取りまとめた集計表を、XML に変換してシステムに取り込みたいといった要望がありましたので、変換(エクスポート)手順をサンプル付きで紹介したいと思います。
目次
変換までの手順
ExcelからXML変換までの大まかな流れです。
- 集計表を作る
- XSD ファイルを作る
- 集計表から xsd ファイルを選択して項目を対応付ける
- エクスポート実行
集計表を作る
まず、実務で利用されている集計表を準備します。ここでは下図のようなの売上表を用意しています。
XSD ファイルを作る。
次に、XSD ファイルを作ります。
XSD とは、XML スキーマ ドキュメントの作成に使用する W3C 標準言語です。XML スキーマは、定義済みの型のセット(string、dateTime、decimal など)と、新しい型を定義するための XML 言語 (complexType、minOccurs、element など) の 2 つの部分で構成されます。
ここでは、以下のような XML を記述しました。
XML スキーマ
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="sales">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="entry" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="entry">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="no"/>
<xsd:element ref="sales_no"/>
<xsd:element ref="sales_date"/>
<xsd:element ref="item"/>
<xsd:element ref="qty"/>
<xsd:element ref="unit_price"/>
<xsd:element ref="totoal_amt"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="no" type="xsd:integer"/>
<xsd:element name="sales_no" type="xsd:string"/>
<xsd:element name="sales_date" type="xsd:date"/>
<xsd:element name="item" type="xsd:string"/>
<xsd:element name="qty" type="xsd:integer"/>
<xsd:element name="unit_price" type="xsd:integer"/>
<xsd:element name="totoal_amt" type="xsd:integer"/>
</xsd:schema>
データ型(type=以降)
- 文字列:string
- 数値:integer
- 日付:dateTime
他にもあります。
このソースを、テキストエディタに貼り付け保存します。
その際、拡張子は「.xsd」にしてください。エンコードの種類は「UTF-8」です。
ここでは「sample.xsd」として保存します。
集計表から xsd ファイルを選択して項目を対応付ける。
集計表の Excel に戻ります。
リボンの「開発」タブから、ソースを選択します。
>>Excel マクロ/VBA画面の表示方法はこちら<<XML ソース画面が出てきますので、右下の「XML の対応付け」ボタンを押下します。
XML の対応付け画面では「追加」ボタンを押下します。
XML ソースの選択画面が出ますので、先ほど作った「sample.xsd」ファイルを選択して「開く」ボタンを押下します。
複数ルート画面が出たら、最も外側のタグである「sales」を選択して「OK」ボタンを押下します。
XML の対応付け画面でも「OK」ボタンを押下して画面を閉じます。
すると、XML ソース画面に対応付けされた「sales_対応付け」がツリー状で出てきます。コメントにあるように、ツリーから要素をワークシートにドラッグします。
例えば「no」であれば、セル「A1」へドラッグします。
全ての要素をドラッグするとこんな感じになります。
エクスポート実行
リボンの「開発」タブから「エクスポート」ボタンを押下します。
保存先を指定して「エクスポート」ボタンを押下します。
実際に出来上がった XML はこんな感じです。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sales>
<entry>
<no>1</no>
<sales_no>SNO-0001</sales_no>
<sales_date>2014-05-20</sales_date>
<item>パソコン</item>
<qty>1</qty>
<unit_price>100000</unit_price>
<totoal_amt>100000</totoal_amt>
</entry>
<entry>
<no>2</no>
<sales_no>SNO-0001</sales_no>
<sales_date>2014-05-20</sales_date>
<item>プリンタ</item>
<qty>1</qty>
<unit_price>30000</unit_price>
<totoal_amt>30000</totoal_amt>
</entry>
<entry>
<no>3</no>
<sales_no>SNO-0002</sales_no>
<sales_date>2014-05-21</sales_date>
<item>パソコン</item>
<qty>1</qty>
<unit_price>50000</unit_price>
<totoal_amt>50000</totoal_amt>
</entry>
<entry>
<no>4</no>
<sales_no>SNO-0003</sales_no>
<sales_date>2014-05-21</sales_date>
<item>モニタ</item>
<qty>1</qty>
<unit_price>25000</unit_price>
<totoal_amt>25000</totoal_amt>
</entry>
<entry>
<no>5</no>
<sales_no>SNO-0003</sales_no>
<sales_date>2014-05-21</sales_date>
<item>マウス</item>
<qty>1</qty>
<unit_price>3000</unit_price>
<totoal_amt>3000</totoal_amt>
</entry>
</sales>
ふむふむ、いい感じです^^
参考サイト
・XML データをエクスポートする - Excel
http://office.microsoft.com/ja-jp/excel-help/HP010206401.aspx
まとめ
Excel(CSV)からXMLへの変換(エクスポート)方法を紹介しました。
実際に実務で利用されるのは、こんなに単純な表ではないでしょうけど、イメージはつかめたのではないでしょうか?
XML と聞くだけで引いてしまう方が結構いらっしゃいますが、テキストだと思えばなんてことありません。
気楽に付き合っていきましょう^^
属性中心の対応付けは「ExcelからXMLへの変換(エクスポート)方法 – 属性中心の対応付け」を参照ください。おつかれさまでした。