簡體   English   中英

如何使用Python將XML文件導入Excel XLS文件模板?

[英]How to import an XML file into an Excel XLS file template using Python?

我有一個Excel模板文件,其中包含XML定義的列。 我可以手動右鍵單擊模板,然后單擊XML>導入,然后選擇XML文件,最后保存該文件。

我如何執行此任務,然后在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模板,您可以簡單地使用Excel打開上述XML示例,確保模板上沒有數據(如果在導入中添加了任何數據,則刪除數據)並將文件另存為XLS。
  3. 導入示例XML文件。 右鍵單擊創建的Excel模板文件,然后單擊XML>導入,然后選擇XML示例文件。
  4. 將包含數據的模板另存為新的XLS。

因此,我需要做的是使步驟3和4自動化

您是否嘗試過使用BeautifulSoup和Pandas? 請注意,我在以下腳本中使用的解析器要求您已經安裝了lxml。 如果沒有,只需pip安裝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文檔 使用此代碼,您可以循環瀏覽所有感興趣的文件,並將其解析為數據幀,然后使用to_excel方法將其導出。

最后,我可以使用win32com.client模塊弄清楚這一點。

我成功使用以下代碼將xml導入到我用作模板的現有Excel xlsx文件中,然后將其保存為其他名稱:

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()

Excel工作簿的方法可以在這里找到。 另外我還必須考慮到saveAs方法不支持正斜杠

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM