我认为这个问题之前已经被问过,但不清楚,在最初的问题中,用户提供了 excel.exe,它是一个 Windows 可执行扩展,而不是 Mac。
- 我需要在 MAC 上的 Python 中打开新的 Excel 实例。
我应该导入哪个模块?
我是一个新手,我已经完成了 Python 语言的学习,但无法理解文档。
如果您只需要启动 Excel,最好的方法就是使用 LaunchServices 来完成。
如果您有PyObjC
(如果您使用的是 Apple 在 10.6 及更高版本上预安装的 Python,您会这样做;否则,您可能必须安装它):
import Foundation
ws = Foundation.NSWorkspace.sharedWorkspace()
ws.launchApplication_('Microsoft Excel')
如果没有,您可以随时使用该open
工具:
import subprocess
subprocess.check_call(['open', '-a', 'Microsoft Excel'])
无论哪种方式,您都可以像用户在 Finder 中双击应用程序图标一样有效地启动 Excel。
如果你想让 Excel 做一些简单的事情,比如打开一个特定的文档,那并不难。查看NSWorkspace
oropen
文档以了解如何做任何你想做的事情。
如果您确实想要控制Excel(例如,打开一个文档、进行一些更改并保存它),您将需要使用它的 AppleScript 界面。
Apple 推荐的方法是 via ScriptingBridge
,或者使用双语言方法(编写 AppleScripts 并通过执行它们NSAppleScript
- 在 Python 中,您可以通过执行它们PyObjC
)。但是,我可能会使用appscript
(从这里获取代码)。尽管它已被其最初的创建者抛弃,并且只是很少维护,并且可能最终会停止与某些未来的 OS X 版本一起使用,但它仍然比官方解决方案好得多。
这是一个示例(未经测试,因为我这里没有 Excel):
import appscript
excel = appscript.app('Microsoft Excel')
excel.workbooks[1].column[2].row[2].formula.set('=A2+1')
从评论中,您是否需要使用数据“更新” Excel 文件并不完全清楚,只是假设您需要 Excel 来执行此操作,或者您需要更改一些 Excel 文件以包含新数据。
在不启动 Excel 的情况下“更新”Excel 文件通常更容易,当然也更快(执行速度)。但是更新不是正确的词:您必须读入文件并将其写出新的。您当然可以覆盖原始文件,因此它看起来像一个更新。
对于“更新” ,如果您使用的文件是文件 (Excel 2003) ,您可以使用三重奏xlrd
, 。xlwt
xlutils
.xls
IIRC xlwt 不支持.xlsx
写入(但xlrd
可以读取这些文件)。
对于.xlsx
我使用的文件openpyxl
,
两者都足以编写数据、公式和基本格式等内容。
如果您有作为“模板”使用的现有 Excel 文件,如果您使用上述软件包之一进行读/写,这些信息会丢失,那么您必须在 Excel 中更新该文件。我必须这样做,因为我没有简单的方法来包含 Visual Basic 宏和客户端指定的非常具体的格式。有时更容易直观地设置电子表格,然后以编程方式填充单元格。但这一切都是在 Windows 上完成的。
如果你真的要在 Mac 上驱动 Excel,因为你需要使用现有文件作为模板,我建议你看看 Applescript。或者,如果它是一个选项,请查看 OpenOffice/LibreOffice PyUno界面。