「XMLファイルをExcelやCSVの表形式に変換したい…」
データ交換や設定ファイルでよく使われるXMLですが、そのままでは内容が見づらいですよね。この記事では、XMLをテーブル(表形式)に変換する様々な方法について、わかりやすく解説していきます。
XMLとは?基本を理解しよう

まず、XMLについて簡単に説明します。
XMLの基本
XML(Extensible Markup Language)とは、「拡張可能なマークアップ言語」のことです。
データの構造や意味を記述するための言語で、人間にもコンピュータにも読める形式でデータを保存できるんです。
XMLの特徴:
- タグを使ってデータを構造化
- 階層的なデータ構造を表現できる
- プラットフォームに依存しない
- 様々なシステム間でデータを交換できる
XMLの基本構造
XMLは主に3つの要素で構成されます。
要素(タグ)
データの種類を表します。開始タグと終了タグで囲みます。
<customer>...</customer>
属性
要素に付加的な情報を追加します。
<customer id="001">
テキスト(データ)
タグで囲まれた実際のデータです。
<name>山田太郎</name>
XMLの例
実際のXMLファイルの例を見てみましょう。
<?xml version="1.0" encoding="UTF-8"?>
<customers>
<customer id="1">
<name>山田太郎</name>
<email>yamada@example.com</email>
<phone>03-1234-5678</phone>
</customer>
<customer id="2">
<name>佐藤花子</name>
<email>sato@example.com</email>
<phone>06-9876-5432</phone>
</customer>
</customers>
この形式は構造がはっきりしていますが、大量のデータを一覧で見るには不便です。
なぜXMLをテーブルに変換するのか?
XMLをテーブル形式に変換する理由はいくつかあります。
理由1:データが見やすくなる
テーブル形式なら、データを一覧で確認できます。
XMLの階層構造よりも、行と列で整理されたテーブルの方が、人間にとってはるかに見やすいんです。
テーブル形式の例:
| ID | 名前 | メール | 電話 |
|---|---|---|---|
| 1 | 山田太郎 | yamada@example.com | 03-1234-5678 |
| 2 | 佐藤花子 | sato@example.com | 06-9876-5432 |
この方が圧倒的に見やすいですよね。
理由2:データの分析がしやすい
Excelやスプレッドシートで開ければ、分析が簡単です。
できること:
- フィルタリング
- ソート(並び替え)
- 集計・計算
- グラフ作成
- ピボットテーブル
テーブル形式なら、これらの機能が使えます。
理由3:他のシステムでの利用が容易
CSV形式に変換すれば、多くのシステムで読み込めます。
データベースへのインポート、他のアプリケーションでの利用など、汎用性が高まるんです。
理由4:共有しやすい
XMLより、Excelファイルの方が一般的です。
社内でデータを共有する際、XMLファイルをそのまま渡すよりも、Excelに変換して渡す方が親切ですね。
Excelを使ったXML変換方法
最も手軽な方法は、Microsoft Excelを使うことです。
方法1:ファイルを直接開く(最も簡単)
最もシンプルな方法です。
手順:
- Excelを起動
- 「ファイル」→「開く」
- XMLファイルを選択
- ダイアログが表示されたら「XMLテーブルとして開く」を選択
- スキーマがない場合、自動的に作成される
この方法なら、数クリックでXMLをテーブル形式で開けます。
注意点:
- 複雑な階層構造のXMLには対応しにくい
- ネストが深いデータは展開されない
- 大きなファイルだと処理に時間がかかる
方法2:ドラッグ&ドロップ
さらに簡単な方法もあります。
手順:
- 空白のExcelシートを開く
- XMLファイルをマウスでドラッグ&ドロップ
- 「XMLテーブルとして開く」を選択
- 確認ダイアログで「OK」
わずか数秒で変換完了です。
方法3:Power Query を使う(推奨)
より高度で安定した方法です。
手順:
- Excelで新しいブックを開く
- 「データ」タブをクリック
- 「データの取得」→「ファイルから」→「XMLから」を選択
- XMLファイルを選択してインポート
- 「データの変換」をクリック
- Power Queryエディタが開く
- 左右の矢印アイコンをクリックして展開
- 必要な列を選択
- 「閉じて読み込む」をクリック
Power Queryのメリット:
- 複雑なXMLにも対応できる
- ネストしたデータを段階的に展開できる
- 変換手順を保存して再利用できる
- 大きなファイルでも安定している
Power Queryは、大容量や複雑なXMLを扱う場合に特におすすめです。
方法4:XMLマップを使う
スキーマを利用した詳細な変換方法です。
手順:
- 「開発」タブを有効にする(リボンのユーザー設定から)
- 「開発」→「ソース」をクリック
- 「XMLマップ」をクリック
- 「追加」からXMLファイルまたはスキーマを選択
- XMLソース作業ウィンドウで要素をシートにドラッグ
- 「データ」タブから「XMLのインポート」
この方法は上級者向けですが、繰り返し同じ構造のXMLを変換する場合に便利です。
ExcelでテーブルをXMLに変換する方法
逆方向の変換も可能です。
Excelから XMLへの変換手順
事前準備:
- 「ファイル」→「オプション」
- 「リボンのユーザー設定」
- 「開発」タブにチェックを入れる
変換手順:
- 変換したいExcelファイルを開く
- 「ファイル」→「名前を付けて保存」
- 「ファイルの種類」で「XMLデータ」を選択
- 保存先とファイル名を指定
- 「保存」をクリック
注意事項:
- Excel 2007以前のバージョンでは更新プログラムが必要
- シンプルな表構造のデータに適している
- 複雑な階層構造は作成できない
Pythonを使ったXML変換方法

プログラミングでの変換方法も紹介します。
Pandasを使った基本的な変換
PythonのPandasライブラリを使えば、簡単に変換できます。
必要なライブラリ:
pip install pandas openpyxl
基本的なコード:
import pandas as pd
# XMLファイルを読み込む
data = pd.read_xml('customers.xml')
# Excelファイルに保存
data.to_excel('customers.xlsx', index=False)
たったこれだけで、XMLからExcelへの変換が完了します。
ネストしたXMLの変換
階層構造があるXMLの場合は、少し工夫が必要です。
import pandas as pd
import xml.etree.ElementTree as ET
# XMLファイルを読み込む
tree = ET.parse('data.xml')
root = tree.getroot()
# データを抽出
data = []
for customer in root:
customer_id = customer.find('ID').text
name = customer.find('Name').text
email = customer.find('Email').text
data.append({
'ID': customer_id,
'Name': name,
'Email': email
})
# DataFrameに変換
df = pd.DataFrame(data)
# Excelに保存
df.to_excel('output.xlsx', index=False)
この方法なら、XMLの構造を理解しながら必要なデータを抽出できます。
CSVへの変換
Excel形式ではなく、CSV形式で保存することもできます。
import pandas as pd
# XMLファイルを読み込む
data = pd.read_xml('customers.xml')
# CSVファイルに保存
data.to_csv('customers.csv', index=False, encoding='utf-8-sig')
encoding=’utf-8-sig’ を指定すると、日本語も正しく表示されます。
オンラインコンバーターを使った変換
プログラミングが不要な方法もあります。
オンラインツールの利点
メリット:
- ソフトウェアのインストール不要
- ブラウザだけで変換できる
- 操作が簡単
使い方の基本
多くのオンラインコンバーターは、以下の手順で使えます。
- オンラインコンバーターのサイトにアクセス
- XMLファイルをアップロード、またはテキストを貼り付け
- 変換先の形式を選択(Excel、CSV等)
- 「変換」ボタンをクリック
- 変換されたファイルをダウンロード
注意点
オンラインツールを使う際は、以下に注意してください。
セキュリティの懸念:
- 機密情報を含むXMLファイルは避ける
- 顧客情報、個人情報は使用しない
- 信頼できるサイトのみを使用
推奨される使い方:
- テスト用のデータのみ使用
- 一時的な変換に限定
- 社内データは避ける
機密性の高いデータは、ExcelやPythonなどのローカル環境で変換しましょう。
データベース(SQL Server)での変換
SQLを使った変換方法も紹介します。
XMLをテーブル形式で取得
SQL Serverでは、XMLデータ型メソッドを使って変換できます。
DECLARE @XMLData XML = '
<Students>
<Student ID="1">
<Name>山田太郎</Name>
<Score>85</Score>
</Student>
<Student ID="2">
<Name>佐藤花子</Name>
<Score>92</Score>
</Student>
</Students>';
SELECT
T.C.value('@ID', 'INT') AS StudentID,
T.C.value('(Name)[1]', 'NVARCHAR(MAX)') AS Name,
T.C.value('(Score)[1]', 'INT') AS Score
FROM @XMLData.nodes('/Students/Student') AS T(C);
結果:
| StudentID | Name | Score |
|---|---|---|
| 1 | 山田太郎 | 85 |
| 2 | 佐藤花子 | 92 |
データベースからXMLを出力
逆に、テーブルデータをXML形式で取得することもできます。
SELECT *
FROM Customers
FOR XML AUTO, ELEMENTS;
FOR XML句のオプション:
- AUTO: 自動的にネストされたXML要素を作成
- RAW: 各行を単純な要素として返す
- EXPLICIT: 詳細な構造を指定できる
- ELEMENTS: 列を子要素として返す(属性ではなく)
このように、データベースでもXMLとテーブルの相互変換が可能です。
変換方法の選び方
どの方法を選ぶべきか、シーンごとに整理します。
ケース1:簡単なXMLを一度だけ変換したい
おすすめ:Excelで直接開く
理由:
- 最も手軽
- ソフトのインストール不要
- 数クリックで完了
ケース2:複雑な階層構造のXMLを変換したい
おすすめ:Excel Power Query
理由:
- ネストしたデータを段階的に展開できる
- 視覚的に操作できる
- 変換手順を保存して再利用可能
ケース3:大量のXMLファイルを一括変換したい
おすすめ:Python スクリプト
理由:
- 自動化できる
- バッチ処理が可能
- カスタマイズしやすい
ケース4:定期的に同じ形式のXMLを変換したい
おすすめ:Python スクリプトまたはExcel XMLマップ
理由:
- 一度設定すれば繰り返し使える
- 手順の標準化ができる
- エラーが少ない
ケース5:テスト用の簡単な変換
おすすめ:オンラインコンバーター
理由:
- インストール不要
- すぐに使える
- 小規模データなら十分
ケース6:データベースと連携したい
おすすめ:SQL Serverのメソッド
理由:
- データベースに直接統合できる
- 大規模データの処理が得意
- クエリで柔軟に操作できる
変換時の注意点とトラブルシューティング
XMLをテーブルに変換する際の注意点です。
注意点1:文字エンコーディング
日本語が文字化けすることがあります。
対策:
- XMLファイルのエンコーディングを確認(UTF-8が一般的)
- Excelで開く場合は、Power Queryを使う
- Pythonではencoding=’utf-8-sig’を指定
注意点2:データ型の保持
日付や数値が文字列になってしまうことがあります。
対策:
- Power Queryでデータ型を明示的に指定
- Pythonではdtype引数を使用
- 変換後にExcelで手動で型を変更
注意点3:階層構造の扱い
ネストしたXMLは、そのままテーブルに変換できません。
対策:
- Power Queryで段階的に展開
- Pythonで必要なデータを抽出
- 複数のテーブルに分割することも検討
注意点4:大きなファイルの処理
数十MB以上のXMLファイルは処理に時間がかかります。
対策:
- Power Queryを使う(Excelより安定)
- Pythonでチャンク処理を実装
- データベースを経由する
よくあるエラーと解決方法
エラー1:「スキーマが参照されていません」
解決策:
「OK」をクリックして自動的にスキーマを作成させる
エラー2:「ネストされた要素が展開されない」
解決策:
Power Queryで矢印アイコンをクリックして手動で展開
エラー3:「メモリ不足エラー」
解決策:
- ファイルを分割する
- Pythonでチャンク処理を使う
- 64bit版のExcelを使用
エラー4:「一部のデータが欠落する」
解決策:
- XMLの構造を確認
- 必須要素が存在するか確認
- Pythonで手動パースして確認
実践例:顧客データの変換
実際の例を見てみましょう。
元のXMLデータ
<?xml version="1.0" encoding="UTF-8"?>
<customers>
<customer>
<id>1</id>
<name>山田太郎</name>
<address>
<prefecture>東京都</prefecture>
<city>渋谷区</city>
</address>
<orders>
<order>
<date>2024-01-15</date>
<amount>15000</amount>
</order>
<order>
<date>2024-02-20</date>
<amount>23000</amount>
</order>
</orders>
</customer>
</customers>
変換後のテーブル(顧客マスタ)
| ID | 名前 | 都道府県 | 市区町村 |
|---|---|---|---|
| 1 | 山田太郎 | 東京都 | 渋谷区 |
変換後のテーブル(注文データ)
| 顧客ID | 注文日 | 金額 |
|---|---|---|
| 1 | 2024-01-15 | 15000 |
| 1 | 2024-02-20 | 23000 |
階層構造のデータは、複数のテーブルに分けることで、リレーショナルデータベースのような構造になります。
まとめ:最適な変換方法を選ぼう
XMLをテーブルに変換する方法について、重要なポイントをまとめます。
主な変換方法:
1. Excel(直接開く)
- 最も簡単
- 小規模・シンプルなXML向け
- 数クリックで完了
2. Excel Power Query
- 複雑なXMLに対応
- 視覚的に操作できる
- 変換手順の保存・再利用が可能
3. Python
- 大量のファイル処理に最適
- 自動化・バッチ処理が可能
- カスタマイズ性が高い
4. オンラインコンバーター
- インストール不要
- テスト用に便利
- 機密情報には使用しない
5. SQL Server
- データベースと連携
- 大規模データの処理が得意
- クエリで柔軟に操作
変換の基本的な流れ:
- XMLファイルを用意
- 目的に応じて変換方法を選択
- データを読み込み・パース
- テーブル形式に変換
- Excel、CSV等で保存
選び方のポイント:
- 簡単なXML → Excelで直接開く
- 複雑なXML → Power Query
- 大量処理 → Python
- 定期実行 → Python スクリプト
- テスト用 → オンラインツール
注意すべきこと:
- 文字エンコーディング(UTF-8推奨)
- データ型の保持
- 階層構造の扱い
- 大きなファイルの処理方法
- セキュリティ(機密情報の扱い)
XMLからテーブルへの変換は、データを見やすく、分析しやすくするための重要なプロセスです。
システムから出力されたXMLファイル、APIから取得したXMLデータ、設定ファイルなど、様々な場面でXMLをテーブル形式に変換する必要が出てきます。この記事で紹介した方法を参考に、自分の用途に最適な変換方法を選んでください。
初心者の方は、まずExcelで直接開く方法から試してみましょう。慣れてきたら、Power Queryを使って複雑なXMLにも挑戦してみてください。プログラミングに興味がある方は、Pythonでの自動化にもぜひチャレンジしてみてくださいね。
効率的にXMLをテーブルに変換して、データの活用を広げていきましょう!

コメント