【发布时间】:2026-01-22 13:40:01
【问题描述】:
我正在创建一个 Python 脚本,它在其中执行一系列任务,其中一项任务是启动和打开 Excel 实例。在我的脚本中实现这一目标的理想方式是什么?
【问题讨论】:
我正在创建一个 Python 脚本,它在其中执行一系列任务,其中一项任务是启动和打开 Excel 实例。在我的脚本中实现这一目标的理想方式是什么?
【问题讨论】:
os.system("打开文件.xls")
【讨论】:
或
os.system("start excel.exe <path/to/file>")
(假设它在路径中,并且您在 Windows 上)
在 Windows 上,start <filename> 也可以工作 - 如果它已经是一个关联的扩展名(就像 xls 一样)
【讨论】:
os.system(),您将看到 cmd 窗口快速打开和关闭。恕我直言,最好使用os.startfile()。
我喜欢popen2,因为它能够监控流程。
excelProcess = popen2.Popen4("start excel %s" % (excelFile))
status = excelProcess.wait()
https://docs.python.org/2/library/popen2.html
编辑:请注意,调用wait() 将阻塞,直到进程返回。根据您的脚本,这可能不是您想要的行为。
【讨论】:
虽然Popen 的答案对于一般情况是合理的,但如果您想对它做一些有用的事情,我会推荐win32api 对于这种特定情况:
它是这样的:
from win32com.client import Dispatch
xl = Dispatch('Excel.Application')
wb = xl.Workbooks.Open('C:\\Documents and Settings\\GradeBook.xls')
xl.Visible = True # optional: if you want to see the spreadsheet
取自a mailing list post,但周围有很多例子。
【讨论】:
subprocess 模块旨在替换其他几个较旧的模块和功能,例如:
.
import subprocess
process_one = subprocess.Popen(['gqview', '/home/toto/my_images'])
print process_one.pid
【讨论】:
正如其他人所说,我建议使用 os.system。如果有人正在寻找与 Mac 兼容的解决方案,这里有一个示例:
import os
os.system("open /Applications/Safari.app")
【讨论】:
我喜欢os.startfile("path to file"),因为它打开文件就像你双击打开一样。
我发现使用os.system("start excel filename") 打开它就像从网络打开文件一样,您必须启用编辑。
【讨论】: