3

我认为这个问题之前已经被问过,但不清楚,在最初的问题中,用户提供了 excel.exe,它是一个 Windows 可执行扩展,而不是 Mac。

  • 我需要在 MAC 上的 Python 中打开新的 Excel 实例。

我应该导入哪个模块?

我是一个新手,我已经完成了 Python 语言的学习,但无法理解文档。

4

2 回答 2

4

如果您只需要启动 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 做一些简单的事情,比如打开一个特定的文档,那并不难。查看NSWorkspaceoropen文档以了解如何做任何你想做的事情。

如果您确实想要控制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')
于 2013-03-27T06:46:31.600 回答
2

从评论中,您是否需要使用数据“更新” Excel 文件并不完全清楚,只是假设您需要 Excel 来执行此操作,或者您需要更改一些 Excel 文件以包含新数据。

在不启动 Excel 的情况下“更新”Excel 文件通常更容易,当然也更快(执行速度)。但是更新不是正确的词:您必须读入文件并将其写出新的。您当然可以覆盖原始文件,因此它看起来像一个更新。

对于“更新” 如果您使用的文件是文件 (Excel 2003) ,您可以使用三重奏xlrd, 。xlwtxlutils.xlsIIRC xlwt 不支持.xlsx写入(但xlrd可以读取这些文件)。

对于.xlsx我使用的文件openpyxl

两者都足以编写数据、公式和基本格式等内容。

如果您有作为“模板”使用的现有 Excel 文件,如果您使用上述软件包之一进行读/写,这些信息会丢失,那么您必须在 Excel 中更新该文件。我必须这样做,因为我没有简单的方法来包含 Visual Basic 宏和客户端指定的非常具体的格式。有时更容易直观地设置电子表格,然后以编程方式填充单元格。但这一切都是在 Windows 上完成的。

如果你真的要在 Mac 上驱动 Excel,因为你需要使用现有文件作为模板,我建议你看看 Applescript。或者,如果它是一个选项,请查看 OpenOffice/LibreOffice PyUno界面。

于 2013-03-27T06:27:11.353 回答