打开excel文件python,这样就可见了

时间:2017-12-06 11:56:13

标签: python python-3.x subprocess

我正在尝试打开一个excel,以便显示它。

我正在使用:

import subprocess
subprocess.check_call(['open', '-a', 'C:\\1\\2\\22.xlsx'])

https://ibb.co/eOhY4b

很抱歉,如果这很明显,但我一直收到此错误消息。据我所知,文件位于那里。

FileNotFoundError: [WinError 2] The system cannot find the file specified

2 个答案:

答案 0 :(得分:3)

不确定原因

import os
os.path.join('C:', '1', '2', '22.xlsx')

没用。我认为它有效,但没有明显的优势。

无论如何,这是有效的

xl=win32com.client.Dispatch("Excel.Application")
xl.Visible = True

xl.Workbooks.Open("C:\\1\\2\\22.xlsx")

答案 1 :(得分:3)

它之所以不起作用只是因为open不是一个已知的命令名(这是Windows注册表中的一个动作,仅此而已)。 subprocess错误消息:

FileNotFoundError: [WinError 2] The system cannot find the file specified

只有一个含义:无法找到可执行文件。它没有(也不能)检查参数以查看它们是否是有效的文件路径,所以不要看那个方向(是的,很遗憾,该消息是通用的,并且不是&和#39; t确切地说找不到哪个文件,一个已知的windows问题)

这样可行:

import subprocess
os.startfile(r'C:\1\2\22.xlsx')

os.startfile尝试执行与您在Windows资源管理器中单击该文件时相同的操作。

此解决方案的优势在于不依赖于win32com

除了/在评论中讨论:os.path.join('C:', '1', '2', '22.xlsx')不起作用,因为它不会在驱动冒号之后添加反斜杠(并且为了"良好的"原因(以及窗户明智的理由:Python os.path.join on Windows)。

>>> os.path.join('C:', '1', '2', '22.xlsx')
'C:1\\2\\22.xlsx'  # wrong

干净利落的方式:

>>> os.path.join('C:', os.sep,'1' , '2', '22.xlsx')
'C:\\1\\2\\22.xlsx'