“从Python运行Excel文件”错误

当我尝试从python调用EXCEL本身打开一个excel文件时,我得到错误。 我该如何解决这个问题?

提前致谢。

代码是:

from win32com.client import Dispatch xl = Dispatch('Excel.Application') wb = xl.Workbooks.Open(r"data\Modules.xls") 

而错误是:

pywintypes.com_error:(-2147352567,'Exception occurred。',(0,u'Microsoft Office Excel',u''data \ Modules.xls')找不到。检查文件名的拼写,并validation文件位置是正确的。\ n \ n如果您试图从最近使用的文件列表中打开该文件,请确保文件未被重命名,移动或删除。“,u'C:\ Program Files( x86)\ Microsoft Office \ Office12 \ 1033 \ XLMAIN11.CHM',0,-2146827284),无)

使用os.path.abspath()将文件系统path转换为绝对path。 Python和Excel进程的当前工作目录是不一样的。

http://docs.python.org/library/os.path.html

我相信你必须指定文件的完整path的原因是因为你通过COM接口与Excel交互。 这与调用CreateProcess不一样。 COM接口告诉excel打开一个文件,但是,path是相对于excel.exe进程的工作目录传递的。

我已经尝试了很多案例:

  • 原始path
  • 使用os.path.abspath
  • 绝对path

以下是结果:

(1)失败案例:

 #[1] Fail # xlsPath = "chart_demo.xls"; # wb = xl.Workbooks.open(xlsPath); #pywintypes.com_error #[2] Fail # xlsPath = "D:\tmp\tmp_dev_root\python\excel_chart\chart_demo.xls"; # absPath = os.path.abspath(xlsPath); # print "absPath=",absPath; #absPath= D:\tmp\tmp_dev_root\python\excel_chart\ mp mp_dev_root\python\excel_chart\chart_demo.xls # wb = xl.Workbooks.open(absPath); #pywintypes.com_error #[3] Fail # xlsPath = "D:\tmp\tmp_dev_root\python\excel_chart\chart_demo.xls"; # normalPath = os.path.normpath(xlsPath); # print "normalPath=",normalPath; #normalPath= D: mp mp_dev_root\python\excel_chart\chart_demo.xls # wb = xl.Workbooks.open(normalPath); #pywintypes.com_error #[4] Fail # rawPath = r"chart_demo.xls"; # wb = xl.Workbooks.open(rawPath); #pywintypes.com_error 

(2)成功案例:

 #[5] OK # xlsPath = "chart_demo.xls"; # absPath = os.path.abspath(xlsPath); # print "absPath=",absPath; #absPath= D:\tmp\tmp_dev_root\python\excel_chart\chart_demo.xls # wb = xl.Workbooks.open(absPath); #OK #[6] OK # rawPath = r"D:\tmp\tmp_dev_root\python\excel_chart\chart_demo.xls"; # wb = xl.Workbooks.open(rawPath); # OK 
Interesting Posts