2017-03-24 8 views
0

XML内に定義された列を持つExcelテンプレートファイルがあります。手動でテンプレートを右クリックし、XML>インポートをクリックしてXMLファイルを選択し、最後にファイルを保存することができます。Pythonを使用してXMLファイルをExcel XLSファイルテンプレートにインポートする方法は?

どのようにすればこのタスクを自動的にPythonでプログラミングできますか? XMLファイルの

例:

<DCPowerFlow> 
    <branches> 
     <branch> 
      <busFrom name="bus_one" number="1" /> 
      <busTo name="bus_two" number="2" /> 
      <id>1</id> 
      <rateA>1000</rateA> 
      <resultPowerFlow> 
       <probOverFlow>0.0</probOverFlow> 
       <maxOverFlow>800</maxOverFlow> 
      </resultPowerFlow> 
     </branch> 
     <branch> 
      <busFrom name="bus_two" number="2" /> 
      <busTo name="bus_three" number="3" /> 
      <id>1</id> 
      <rateA>1200</rateA> 
      <resultPowerFlow> 
       <probOverFlow>0.1</probOverFlow> 
       <maxOverFlow>1300</maxOverFlow> 
      </resultPowerFlow> 
     </branch> 
    </branches> 
</DCPowerFlow> 

は手動タスクをチェックするには:

  1. は、XMLファイルとして上記の例を保存します。
  2. Excel XLSテンプレートを作成するには、上記のXML例をExcelで開くだけで、テンプレートにデータがないことを確認します(追加したインポート内のデータを削除してください)。
  3. サンプルXMLファイルをインポートします。作成されたExcelテンプレートファイルを右クリックし、次にXML>インポートを選択し、XMLサンプルファイルを選択します。
  4. テンプレートを新しいXLSとしてデータとともに保存します。

私がする必要があるのはです。ステップ3と4を自動化します

+0

私はPython 2.5を使用しています。 –

答えて

0

最後に、win32com.clientモジュールを使用してこれを把握することができました。

私はテンプレートとして使用する既存のExcelのxlsxファイルを午前XMLをインポートし、別の名前で保存することに成功し、次のコードを使用:Excelブックのための

import win32com.client as win32 
excel = win32.gencache.EnsureDispatch('Excel.Application') 
wb = excel.Workbooks.Open("D:/tmp/template.xlsx") 
wb.XmlImport("D:/tmp/result.xml") 
wb.SaveAs("D:\\tmp\\result.xlsx") 
wb.Close() 

方法はhereを見つけることができます。また、私はsaveAs method doesn't support forward slashesを考慮に入れなければなりませんでした。

1

BeautifulSoupとPandasを試しましたか?次のスクリプトで使用するパーサーでは、すでにlxmlをインストールしておく必要があります。あなたがそれを持っていない場合は、pip install lxml。

import pandas as pd 
from bs4 import BeautifulSoup 

file = open("file.xml", 'r') 
soup = BeautifulSoup(file, 'lxml') 
df = pd.DataFrame({'ids': [x.text for x in soup.find_all('id')]}) 
df.to_excel('data.xls') 

ファイルの解析方法を理解する必要がありますが、必要なツールが提供されます。ファイルの解析方法の詳細については、BeautifulSoup documentationをご覧ください。このコードを使用すると、関心のあるすべてのファイルをループし、それらをデータフレームに解析し、to_excelメソッドを使用してそれらをエクスポートすることができます。

+0

これを試してみます。私はElementTree for XMLとpandasを使用して、Excelファイルを読み込んでいます。 –

+0

ドキュメントには「美しいスープを開発するためにPython 2.7とPython 3.2を使用していますが、他の最新バージョンでも動作するはずです。だからうまくいけば、それが、そうでない場合は、BeautifulSoup3を使用してみてください。これは私に思い出させるものですが、最新のバージョンは 'pip install bs4'でインストールする必要があります。 –

+0

xmlファイルの構造全体をExcelにインポートしたい場合はどうすればいいですか?簡単な方法はありませんか?またはビットfindindのデータをビットし、データフレームにエクスポートしてExcelファイルを保存する必要がありますか? –

関連する問題