14

我正在创建一个 Python 脚本,它在其中执行一系列任务,其中一项任务是启动和打开 Excel 实例。在我的脚本中实现这一目标的理想方式是什么?

4

7 回答 7

12

虽然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

取自邮件列表帖子,但周围有很多例子。

于 2008-10-29T19:22:09.823 回答
8

或者

os.system("start excel.exe <path/to/file>")

(假设它在路径中,并且您在 Windows 上)

并且在 Windows 上也可以start <filename>正常工作 - 如果它已经是关联的扩展名(就像 xls 一样)

于 2008-10-29T17:44:31.767 回答
7

我喜欢popen2监控过程的能力。

excelProcess = popen2.Popen4("start excel %s" % (excelFile))
status = excelProcess.wait()

https://docs.python.org/2/library/popen2.html

编辑:请注意,调用wait()将阻塞,直到进程返回。根据您的脚本,这可能不是您想要的行为。

于 2008-10-29T17:50:13.410 回答
7

subprocess模块旨在替换其他几个旧的模块和功能,例如:

  • 操作系统
  • os.spawn*
  • os.popen*
  • popen2.*
  • 命令。*

.

import subprocess

process_one = subprocess.Popen(['gqview', '/home/toto/my_images'])

print process_one.pid
于 2008-10-30T08:27:03.530 回答
2

正如其他人所说,我建议使用 os.system。如果有人正在寻找与 Mac 兼容的解决方案,这里有一个示例:

import os
os.system("open /Applications/Safari.app")
于 2011-06-14T22:42:54.363 回答
0

os.system("打开文件.xls")

于 2008-10-29T17:41:19.573 回答
0

我喜欢os.startfile("path to file")它打开文件,就好像你已经双击打开一样。

我发现os.system("start excel filename")它打开它就像从网络上打开一个文件一样,你必须启用编辑。

于 2019-01-08T21:34:31.463 回答