对此有两种基本方法。
您询问了第一个问题:自动化 Excel 以打开和保存文件。实际上有两种方法可以做到这一点。第二种是使用 Python 工具,无需 Excel 的帮助就可以直接在 Python 中创建文件。所以:
1a:通过其自动化界面自动化 Excel。
Excel 旨在通过 COM 自动化由外部应用程序控制。Python 在pywin32
. 不幸的是,pywin32
关于 Excel 的 COM 自动化接口的所有文档都是为 JScript、VB、.NET 或 C 中的原始 COM 编写的。幸运的是,该站点上有许多关于使用win32com
to驱动 Excel,比如这个,所以你可能可以自己弄清楚。它看起来像这样:
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 访问文件格式名称时遇到问题,只是在查找和查找等效数字时遇到了问题(“fileformat xlExcel8”的快速谷歌显示等效数字为 56,并确认这是 97-2003 的正确格式二进制文件)。
当然,如果你不需要在 Python 中做,MSDN 中充满了 JScript、VBA 等方面的优秀示例。
您需要的文档都在MSDN上(因为Excel 的 Office Developer Network已合并到 MSDN,然后显然变成了 404 页面)。Excel 的顶级页面是Welcome to the Excel 2013 developer reference(如果您想要不同的版本,请单击上面导航中的“Office 客户端开发”并选择不同的版本),您最关心的是对象模型参考。您还可以在 Excel 的内置帮助中找到相同的文档(通常链接到完全相同的网页)。例如,你会发现Application
对象有一个Workbooks
属性,它是一个Workbooks
对象,它有Open
和Add
方法返回一个Workbook
对象,它有一个SaveAs
方法,该方法接受一个可选FileFormat
参数 type XlFileFormat
,其值为xlExcel8
= 56
。
xlExcel8
正如我之前暗示的那样,由于某种我不再记得的原因,您可能无法访问枚举值,但您可以在 MSDN 上查找该值(或只是谷歌它)并输入数字 56。
其他文档(此处和 MSDN 中的其他地方)通常要么是您自己猜到的东西,要么是与win32com
. 不幸的是,已经很稀少的win32com
文档希望您已经阅读过该文档——但幸运的是,这些示例足以让您在除了对象模型之外的几乎所有内容中一头雾水。
1b:通过其 GUI 自动化 Excel。
在 Windows 上自动化 GUI 是一个巨大的痛苦,但有许多工具可以让它变得更容易,例如pywinauto
. 您也许可以只使用为您swapy
编写pywinauto
脚本。
如果您不需要在 Python 中执行此操作,那么单独的脚本系统(如AutoIt
拥有更大的用户群和更多示例)可以让您的生活更轻松。
2:全部用 Python 完成。
xlutils
,python-excel的一部分,也许可以做你想做的事,根本不用接触 Excel。