编程语言
首页 > 编程语言> > python – 生成正确的excel xls格式

python – 生成正确的excel xls格式

作者:互联网

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

在订购零件的网站上,您可以导入excel文件,以便订单自动填写.这里的问题是,每次我想订单时,我必须打开excel并使用类型为MS Excel 97-2003的xls扩展名保存文件以使导入正常工作.
然后excel文档看起来完全一样,但是当用记事本打开时,我们再也看不到xml,只能看到二进制转储.

有没有办法自动化这个过程,通过运行bat文件或者可能在我的python脚本中添加一些行,以便以适当的格式转换?

(我知道之前已经问过这个问题,但从来没有得到回答)

解决方法:

有两种基本方法.

您询问了第一个:自动化Excel以打开并保存文件.实际上有两种方法可以做到这一点.第二种是使用Python工具,可以在没有Excel帮助的情况下直接在Python中创建文件.所以:

1a:通过自动化界面自动化Excel.

Excel旨在通过COM自动化由外部应用程序控制. Python在pywin32内部有一个很棒的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访问文件格式名称时遇到问题,只是查看和查找等效数字(快速google for“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客户端开发”并选择一个不同的版本),你最关心的是Object model reference.你也可以找到在Excel的内置帮助中,相同的文档(通常链接到完全相同的网页).例如,您发现Application对象具有Workbooks属性,即Workbooks对象,其具有返回Workbook对象的Open和Add方法,该对象具有SaveAs方法,该方法采用类型为XlFileFormat的可选FileFormat参数,其值为xlExcel8 = 56.

正如我之前暗示的那样,您可能无法访问xlExcel8之类的枚举值,因为某些我不再记得的原因,但您可以在MSDN(或只是Google)上查看值,并将数字56改为.

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

1b:通过GUI自动化Excel.

在Windows上自动化GUI是一个巨大的痛苦,但有许多工具使它变得更加容易,例如pywinauto.您可以使用swapy为您编写pywinauto脚本.

如果您不需要在Python中执行此操作,那么像AutoIt这样的独立脚本系统拥有更大的用户群,甚至还有更多示例可以让您的生活更轻松.

2:用Python完成所有操作.

xlutils,python-excel的一部分,可能能够做你想要的,而根本不涉及Excel.

标签:xls,python,excel,windows,ms-office
来源: https://codeday.me/bug/20190901/1782464.html