生成正确的excel xls表单

2024-10-01 13:41:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python创建了一个小脚本来生成一个与excel兼容的xml文件(用xls扩展名保存)。该文件是从零件数据库生成的,因此我可以用提取的数据下订单。在

在订购零件的网站上,您可以导入excel文件,以便订单自动填充。这里的问题是,每次我要下订单时,我都必须打开excel并保存扩展名为msexcel97-2003的xls文件,才能使导入生效。 excel文档看起来完全一样,但是当用记事本打开时,我们再也看不到xml了,只有二进制转储。在

有没有一种方法可以使这个过程自动化,通过运行一个bat文件,或者在python脚本中添加一些行,以便将其转换为正确的格式?在

(我知道以前有人问过这个问题,但一直没有人回答)


Tags: 文件数据方法文档订单数据库网站二进制
1条回答
网友
1楼 · 发布于 2024-10-01 13:41:00

有两种基本方法。在

你问了第一个问题:自动打开和保存文件。实际上有两种方法可以做到这一点。第二种方法是使用Python工具,可以直接在Python中创建文件,而不需要Excel的帮助。所以:

1a:通过Excel的自动化接口实现Excel的自动化

Excel被设计成通过COM自动化由外部应用程序控制。Python在^{}内部有一个很棒的COM自动化接口。不幸的是,关于pywin32的文档并不是很好,而且所有关于Excel COM自动化接口的文档都是为C语言中的JScript、VB、.NET或原始COM编写的。幸运的是,这个网站上有很多关于使用win32com来驱动Excel的问题,比如this one,所以你可以自己解决。它看起来像这样:

import win32com.client
excel = win32com.client.Dispatch('Excel.Application')
spreadsheet = excel.Workbooks.Open('C:/path/to/spreadsheet.xml')
spreadsheet.SaveAs('C:/path/to/spreadsheet.xls', fileformat=excel.xlExcel8)

这没有经过任何测试,因为我手头没有一个装有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}}的对象,它有Open}和{>}方法的方法返回一个返回^{{a9}}对象的对象,该对象有一个SaveAs}方法方法方法,该方法采取了一个可选的{{}{{{{}}{{{{{cd13}}}}}}{{{{{{{{{}。在

正如我前面所暗示的,您可能无法访问像xlExcel8这样的枚举值,因为我已经不记得了,但是您可以在MSDN上查找该值(或者只搜索它)并将数字56改为。在

其他文档(在这里和MSDN中的其他地方)通常是您可以自己猜测的内容,或者是与win32com无关的内容。不幸的是,已经很稀疏的win32com文档希望您已经阅读过该文档,但是幸运的是,这些示例足以让您蒙混过关,了解对象模型之外的几乎所有内容。在

1b:通过图形用户界面自动化Excel

在Windows上实现GUI的自动化是一个巨大的痛苦,但是有很多工具可以让它变得更简单,比如^{}。您可以使用^{}为您编写pywinauto脚本。在

如果不需要在Python中实现,那么像^{}这样的独立脚本系统拥有更大的用户群和更多的示例,使您的生活更轻松。在

2: 都是用Python完成的

xlutils,是{a14}的一部分,可能可以做你想做的事情,而不需要接触Excel。在

相关问题 更多 >