web-dev-qa-db-ja.com

XMLをExcelにすばやく変換する

XMLの112K行をExcelビューに変換する最も速い(最小限の労力で、スーパーパフォーマンスではない)方法は何ですか。

9
Bajji

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>
6
pgfearo

なぜそんなに複雑なのですか? [ファイル]-> [開く]でファイルを開き、xmlを選択してロードします。何が起こるか見てください。

27
Friedrich

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
2
Roland Penner

http://xmlgrid.net/xmlToExcel.html を使用してXMLをExcelに変換できます。 XmlGridを使用すると、Excelファイルに変換するXMLドキュメントのルートまたはその他の要素を選択できます。変換されたExcelファイルは、XMLドキュメントの構造に応じて、1枚または複数枚のシートになります。

1
Zac Zeng

Eurostat SDMX Converter を使用することをお勧めします。これは、Javaプログラムであるため、プラットフォームに依存しません。入力としてGeneric XMLファイルを使用し、DSDファイルとしてStructureXMLfileを使用します。

1
Gregology

おそらく、XMLを高級言語(Java、C#などすべてにそのような機能があります)で読み取り、ファイルを.csvファイルとして書き出してから、[データ]-> [インポート]機能を使用してExcelにインポートします。

より良い方法があるかもしれませんが、これは1つの簡単な方法です。

0
dcp
  1. XMLファイルを開きます。
  2. ページを右クリックして、「MicrosoftExcelにエクスポート」を選択します。
  3. 開いたExcelページをクリックして、インポートを選択します。
  4. Excelは、独自のスキーマを作成することを通知します。 [OK]をクリックします。
  5. Excelはデータを配置する場所を尋ね、デフォルトでセル$ A $ 1になります。 [OK]をクリックします。
  6. 完了:)
0
Eric

XMLをExcelに変換する方法 の手順を説明するビデオを作成しました。

XML変換ビデオは、次の一連の手順を実行します

  • XMLファイルをFlexter(無料のXMLコンバーター)にアップロードします

  • XMLをテキストファイルに変換します(タブ区切り値、TSV)

  • テキストファイルをExcelにインポートする

  • Excelでデータセットを結合する

  • ExcelPowerPivotテーブルのデータを分析します

0
Uli Bethke