Excel(CSV)からXMLへの変換(エクスポート)方法

Excel(CSV)からXMLへの変換(エクスポート)方法です。

Excel(CSV)からXMLへの変換(エクスポート)方法

Excel で取りまとめた集計表を、XML に変換してシステムに取り込みたいといった要望がありましたので、変換(エクスポート)手順をサンプル付きで紹介したいと思います。


変換までの手順

ExcelからXML変換までの大まかな流れです。

  1. 集計表を作る
  2. XSD ファイルを作る
  3. 集計表から xsd ファイルを選択して項目を対応付ける
  4. エクスポート実行

集計表を作る

まず、実務で利用されている集計表を準備します。ここでは下図のようなの売上表を用意しています。

Excel Export 集計表

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 Export ソース選択

>>Excel マクロ/VBA画面の表示方法はこちら<<

XML ソース画面が出てきますので、右下の「XML の対応付け」ボタンを押下します。

Excel Export XMLソース表示

XML の対応付け画面では「追加」ボタンを押下します。

Excel Export XML対応付け追加

XML ソースの選択画面が出ますので、先ほど作った「sample.xsd」ファイルを選択して「開く」ボタンを押下します。

Excel Export XMLソース選択

複数ルート画面が出たら、最も外側のタグである「sales」を選択して「OK」ボタンを押下します。

Excel Export 複数ルート

XML の対応付け画面でも「OK」ボタンを押下して画面を閉じます。

Excel Export XML対応付け選択OK

すると、XML ソース画面に対応付けされた「sales_対応付け」がツリー状で出てきます。コメントにあるように、ツリーから要素をワークシートにドラッグします。

例えば「no」であれば、セル「A1」へドラッグします。

Excel Export XMLソースsales対応付け

全ての要素をドラッグするとこんな感じになります。

Excel Export 対応付け済

エクスポート実行

リボンの「開発」タブから「エクスポート」ボタンを押下します。

Excel Export エクスポート

保存先を指定して「エクスポート」ボタンを押下します。

Excel Export エクスポート保存

実際に出来上がった 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への変換(エクスポート)方法 – 属性中心の対応付け」を参照ください。

おつかれさまでした。

この記事がお役に立ちましたら シェア をお願いいたします。