XMLの112K行をExcelビューに変換する最も速い(最小限の労力で、スーパーパフォーマンスではない)方法は何ですか。
Excel 2007を使用していてXSLTを使用したい場合は、おそらく EXPath Zip Module 機能を使用して既存のExcel.xslxファイルを変更することをお勧めします。
ただし、私の好みのオプションは、小さなExcelVBAマクロを使用することです。
'load'と呼ばれるVBAプロシージャのサンプルコードを以下に含めました-このサンプルはXMLDOMを使用するため、XMLの112K行すべてが最初にメモリにロードされますが、パフォーマンスが問題にならない場合は、SAXよりも単純です代替。
XML入力構造に合うようにxpathToExtractRow
を変更する必要があります。 XML行要素の直接の子ノードにテキストノードとしてインポートするセルデータが含まれているという前提もあります。含まれていない場合は、SelectNode
呼び出しを使用して必要なデータを取得する必要があります。
DOMDocument60としてのプライベートDOM
パブリックサブロード()
Dim nodeList As IXMLDOMNodeList
Dim nodeRow As IXMLDOMNode
Dim nodeCell As IXMLDOMNode
Dim rowCount As Integer
Dim cellCount As Integer
Dim rowRange As Range
Dim cellRange As Range
Dim sheet As Worksheet
Dim xpathToExtractRow As String
xpathToExtractRow = "/feed/row"
Set dom = New DOMDocument60
dom.load ("c:\test\source.xml")
Set sheet = ActiveSheet
Set nodeList = dom.SelectNodes(xpathToExtractRow)
rowCount = 0
For Each nodeRow In nodeList
rowCount = rowCount + 1
cellCount = 0
For Each nodeCell In nodeRow.ChildNodes
cellCount = cellCount + 1
Set cellRange = sheet.Cells(rowCount, cellCount)
cellRange.Value = nodeCell.Text
Next nodeCell
Next nodeRow
エンドサブ
サンプル入力XML:
<?xml version="1.0" encoding="utf-8"?>
<feed>
<row>
<firstname>joe</firstname>
<lastname>smith</lastname>
<country>jamaica</country>
</row>
<row>
<firstname>bill</firstname>
<lastname>coots</lastname>
<country>uk</country>
</row>
</feed>
なぜそんなに複雑なのですか? [ファイル]-> [開く]でファイルを開き、xmlを選択してロードします。何が起こるか見てください。
Windows 7以降を使用している場合は、PowerShellを使用してください。それはかなり速くて簡単です。
一発ギャグ:
([xml](Get-Content myfile.xml)).xml.note | Export-Csv myoutput.csv
ワンライナーを機能させるには、XMLファイルの構造を反映するように。xml.noteコードを変更する必要があります。
たとえば、myfile.xmlの次の内容を取り上げます。
<xml>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note>
<to>Jason</to>
<from>Alice</from>
<heading>Help</heading>
<body>I can't figure this out.</body>
</note>
</xml>
次のような変数にXMLを割り当てることができます。
[xml]$data = Get-Content myfile.xml
これで、次のようなあらゆる種類のことができます。
$data.GetElementsByTagName('note')
または単に
$data.xml.note.from
http://xmlgrid.net/xmlToExcel.html を使用してXMLをExcelに変換できます。 XmlGridを使用すると、Excelファイルに変換するXMLドキュメントのルートまたはその他の要素を選択できます。変換されたExcelファイルは、XMLドキュメントの構造に応じて、1枚または複数枚のシートになります。
Eurostat SDMX Converter を使用することをお勧めします。これは、Javaプログラムであるため、プラットフォームに依存しません。入力としてGeneric XMLファイルを使用し、DSDファイルとしてStructureXMLfileを使用します。
おそらく、XMLを高級言語(Java、C#などすべてにそのような機能があります)で読み取り、ファイルを.csvファイルとして書き出してから、[データ]-> [インポート]機能を使用してExcelにインポートします。
より良い方法があるかもしれませんが、これは1つの簡単な方法です。
XMLをExcelに変換する方法 の手順を説明するビデオを作成しました。
XML変換ビデオは、次の一連の手順を実行します
XMLファイルをFlexter(無料のXMLコンバーター)にアップロードします
XMLをテキストファイルに変換します(タブ区切り値、TSV)
テキストファイルをExcelにインポートする
Excelでデータセットを結合する
ExcelPowerPivotテーブルのデータを分析します