Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
';从Python运行Excel文件';错误_Python_Winapi_Excel - Fatal编程技术网

';从Python运行Excel文件';错误

';从Python运行Excel文件';错误,python,winapi,excel,Python,Winapi,Excel,当我试图通过从python调用excel本身来打开excel文件时,我得到了一个错误。我怎样才能解决这个问题 提前谢谢 代码是: from win32com.client import Dispatch xl = Dispatch('Excel.Application') wb = xl.Workbooks.Open(r"data\Modules.xls") 错误是: pywintypes.com_错误:(-2147352567,'发生异常',(0,u'M

当我试图通过从python调用excel本身来打开excel文件时,我得到了一个错误。我怎样才能解决这个问题

提前谢谢

代码是:

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

pywintypes.com_错误:(-2147352567,'发生异常',(0,u'Microsoft Office Excel',u“'data\Modules.xls'找不到。请检查文件名的拼写,并验证文件位置是否正确。\n\n如果试图从最近使用的文件列表中打开文件,请确保该文件未被重命名、移动或删除。”,u'C:\Program files(x86)\Microsoft Office\Office12\1033\XLMAIN11.CHM',0,-2146827284),无)

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


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

我尝试了关于以下方面的y案例:

  • 原始路径
  • 使用os.path.abspath
  • 绝对路径
结果如下:

(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
@山沙 我不知道你是否还在寻找答案 打开excel后,如果看不到文件,请编写以下代码

xl.Visible = True

excel文件的路径应该是绝对路径,py文件,excel文件应该在不同的文件夹中。当我使用上述方法解决问题时,我也遇到了相同的错误。如果是相对路径,则需要将其转换为绝对路径。

python代码文件是否位于
数据
目录中?请尝试给出完整路径xls文件的路径,而不是相对路径。它在同一个目录中。必须是这样。我不应该给出完整路径。我知道这不是你想要的,但你应该尝试
xlrd
模块,而不是使用
win32com
。这会让你的生活更轻松。我可以使用xlrd在excel中打开excel文件吗?什么路径我应该提供给那个函数吗?当我使用“wb=xl.Workbooks.Open(os.path.abspath(r“data\Modules.xls”)”)时,我没有发现错误。但是我看不到任何Excel文件被打开。即使我在task manager.os.path.join(os.getcwd(),“path”,to”,“your”,“file.xls”)中看到Excel实例