如何使用Python将XML文件导入Excel XLS文件模板?

时间:2017-03-24 19:40:58

标签: python xml excel python-2.5

我有一个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&gt;导入,然后选择XML示例文件。
  4. 将数据另存为新XLS。
  5. 所以我需要做的是自动执行第3步和第4步

2 个答案:

答案 0 :(得分: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方法导出它们。

答案 1 :(得分:0)

最后,我可以使用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工作簿的方法here。我还必须考虑到saveAs method doesn't support forward slashes