我用python创建了一个小脚本来生成一个与excel兼容的xml文件(用xls扩展名保存)。该文件是从零件数据库生成的,因此我可以用提取的数据下订单。在
在订购零件的网站上,您可以导入excel文件,以便订单自动填充。这里的问题是,每次我要下订单时,我都必须打开excel并保存扩展名为msexcel97-2003的xls文件,才能使导入生效。 excel文档看起来完全一样,但是当用记事本打开时,我们再也看不到xml了,只有二进制转储。在
有没有一种方法可以使这个过程自动化,通过运行一个bat文件,或者在python脚本中添加一些行,以便将其转换为正确的格式?在
(我知道以前有人问过这个问题,但一直没有人回答)
有两种基本方法。在
你问了第一个问题:自动打开和保存文件。实际上有两种方法可以做到这一点。第二种方法是使用Python工具,可以直接在Python中创建文件,而不需要Excel的帮助。所以:
1a:通过Excel的自动化接口实现Excel的自动化
Excel被设计成通过COM自动化由外部应用程序控制。Python在^{} 内部有一个很棒的COM自动化接口。不幸的是,关于
pywin32
的文档并不是很好,而且所有关于Excel COM自动化接口的文档都是为C语言中的JScript、VB、.NET或原始COM编写的。幸运的是,这个网站上有很多关于使用win32com
来驱动Excel的问题,比如this one,所以你可以自己解决。它看起来像这样:这没有经过任何测试,因为我手头没有一个装有Excel的Windows框。我隐约记得在从win32com获取文件格式名时遇到了一些问题,而且只是通过punt和查找等价的数字(在google上快速搜索“fileformat xlExcel8”会发现数字等价物是56,并确认这是97-2003二进制xls的正确格式)。在
当然,如果您不需要使用Python,MSDN中有很多JScript、VBA等的优秀示例
您需要的文档都在MSDN(因为Office Developer Network for Excel被合并到MSDN中,然后显然变成了404页)。Excel的顶层页面是Welcome to the Excel 2013 developer reference(如果您需要其他版本,请单击上面导航栏中的“Office client development”并选择一个不同的版本),您最关心的是Object model reference。您也可以在Excel的内置帮助中找到相同的文档(通常链接到完全相同的网页)。举例来说,你会发现^{{{a7}}的对象有一个^{{>}}属性,这是一个^{{a8}}的对象,它有>}方法的方法返回一个返回^{{a9}}对象的对象,该对象有一个}{{{{}}{{{{{cd13}}}}}}{{{{{{{{{}。在
Open
}和{SaveAs
}方法方法方法,该方法采取了一个可选的{{正如我前面所暗示的,您可能无法访问像
xlExcel8
这样的枚举值,因为我已经不记得了,但是您可以在MSDN上查找该值(或者只搜索它)并将数字56改为。在其他文档(在这里和MSDN中的其他地方)通常是您可以自己猜测的内容,或者是与
win32com
无关的内容。不幸的是,已经很稀疏的win32com
文档希望您已经阅读过该文档,但是幸运的是,这些示例足以让您蒙混过关,了解对象模型之外的几乎所有内容。在1b:通过图形用户界面自动化Excel
在Windows上实现GUI的自动化是一个巨大的痛苦,但是有很多工具可以让它变得更简单,比如^{} 。您可以使用^{} 为您编写
pywinauto
脚本。在如果不需要在Python中实现,那么像^{} 这样的独立脚本系统拥有更大的用户群和更多的示例,使您的生活更轻松。在
2: 都是用Python完成的
xlutils
,是{a14}的一部分,可能可以做你想做的事情,而不需要接触Excel。在相关问题 更多 >
编程相关推荐