从Python运行Excel文件时出错

0 投票
5 回答
8747 浏览
提问于 2025-04-16 16:57

当我尝试通过Python直接打开一个Excel文件时,出现了错误。我该怎么解决这个问题呢?

谢谢大家的帮助。

我的代码是:

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

然后出现的错误是:

pywintypes.com_error: (-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), None)

5 个回答

0

我尝试了很多情况,主要是关于:

  • 原始路径
  • 使用 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
0

我认为你需要指定文件的完整路径,是因为你是通过COM接口和Excel进行交互的。这和直接调用CreateProcess是不一样的。COM接口是告诉Excel去打开一个文件,但这个路径是相对于Excel程序(excel.exe)的工作目录来说的。

9

使用 os.path.abspath() 可以把文件系统的路径转换成绝对路径。你在 Python 和 Excel 中的当前工作目录是不一样的。

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

撰写回答