【问题标题】:'Run Excel File From Python' Error“从 Python 运行 Excel 文件”错误
【发布时间】:2011-05-04 07:08:24
【问题描述】:

当我尝试通过从 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' 找不到。检查文件名的拼写,并且验证文件位置是否正确。\n\n如果您尝试从最近使用的文件列表中打开该文件,请确保该文件未被重命名、移动或删除。", u'C:\程序文件 (x86)\Microsoft Office\Office12\1033\XLMAIN11.CHM', 0, -2146827284), 无)

【问题讨论】:

  • python代码文件是否在data目录存在的目录下?尝试给出 xls 文件的完整路径而不是相对路径。
  • 在同一目录下。一定是这样的。我不应该给出完整的路径。
  • 我知道这不是您想要的,但您应该尝试使用xlrd 模块而不是使用win32com。会让您的生活更轻松。
  • 我可以使用xlrd在EXCEL中打开一个excel文件吗?

标签: python winapi excel


【解决方案1】:

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

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

【讨论】:

  • 我应该为该函数提供什么路径?
  • 当我使用“wb = xl.Workbooks.Open(os.path.abspath(r"data\Modules.xls"))”时,我没有收到错误。但我看不到任何打开的 Excel 文件。即使我在任务管理器中看到一个 excel 实例。
  • os.path.join(os.getcwd(), "path, "to", "your", "file.xls"))
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    我尝试过很多案例:

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

    【讨论】:

      【解决方案4】:

      @Shashal 不知道你是否还在寻找答案 打开excel后如果看不到文件,写如下代码

      xl.Visible = True
      

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-05-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多