繁体   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