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

我有一个Excel模板文件,它具有在XML中定义的列。 手动我可以右键单击模板,然后selectXML>导入,然后selectXML文件,最后保存文件。

我怎样才能在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. 为了创buildExcel XLS模板,您可以简单地使用Excel打开上面的XML示例,确保模板上没有数据(如果在导入中添加了任何数据,则删除数据)并将文件另存为XLS。
  3. 导入示例XML文件。 右键单击创build的Excel模板文件,然后selectXML>导入,然后selectXML示例文件。
  4. 将数据保存为新的XLS。

所以我需要做的是自动步骤3和4

你有没有尝试过使用BeautifulSoup和Pandas? 请注意,我在以下脚本中使用的parsing器需要您安装lxml。 如果你没有,只需要安装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') 

虽然你将不得不弄清楚你想如何parsing你的文件,那会给你你需要的工具。 如果您需要更多关于如何parsing文件的信息,请尝试访问BeautifulSoup文档 。 使用此代码,您可以循环遍历感兴趣的所有文件,并将其parsing为数据框,然后使用to_excel方法导出它们。

最后我可以使用win32com.client模块来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工作簿的方法可以在这里find。 另外,我必须考虑到saveAs方法不支持正斜杠 。