com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2147024809), None)

问题描述 投票:0回答:2

从 excel 表生成 pdf 时出现以下错误:

 ws.ExportAsFixedFormat(0, save_as)
 File "<COMObject <unknown>>", line 5, in ExportAsFixedFormat
 com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2147024809), None)

下面是我的代码:

    pythoncom.CoInitialize()
    xlApp = client.Dispatch("Excel.Application")
    logging.debug("Saving excel file {} to file {}".format(filename, save_as))
    books = xlApp.Workbooks.Open(filename)
    ws = books.Worksheets[0]
    ws.Visible = 1
    ws.ExportAsFixedFormat(0, save_as)
    books.Close(True)
    xlApp.Quit()

它在我安装了 office 365 的笔记本电脑上运行,但在安装了 Microsoft office 2007 的另一个系统上出现上述错误。

Python版本:python 2.7
openpyxl:2.4.5
pywin32:224

没有足够的文档。如果有人可以提供调试它并理解错误的指针,那将是很大的帮助。

python pywin32
2个回答
0
投票

我在使用 xlwings 与 Excel 交互时遇到了同样的错误。 xlwings 还在后端使用 win32com 客户端。 我认为这不是 Excel 版本问题。 我意识到只要执行代码并且 excel 文件(包含数据)不在焦点中,就会弹出此错误。为了解决这个问题,我只需选择正在处理的文件并运行代码,它总是对我有用。


0
投票

我找到了这篇相关文章:Python 与 Excel 宏的交互 那里的代码适用于 python 2。最重要的部分是关闭工作簿并退出应用程序会导致 excel 工作簿在后台隐藏地打开,因此当你想用 Excel 打开工作簿时,它可以打开以供阅读。要完全关闭所有线程,请在最后执行此操作(Python 3):

books.Close(True) 
xlApp.quit()
xlApp = None
del xlApp

这样就没有线程了,工作簿可以打开进行写入,可以保存...

这也可能有助于解密一般错误代码,在 Python 提示符中:

import win32api
win32api.FormatMessage([ERRORCODEHERE])

例如:

import win32api
win32api.FormatMessage(-2147352567)

这可能会给你更多关于错误的提示(对我来说没有)。

我发现报错的时候

  1. sheet name 给错了,所以excel文件不包含这样的 工作表
  2. 当脚本运行并在给定的任务上执行任务时 工作表不知何故失去了焦点。如果您打开或 只需在脚本运行时单击一个 excel 文件,或者您 用脚本打开几个工作簿,它不知何故丢失了。

Excel 和 python api 应该没有并行工作的问题,但对我来说它确实有问题。

一步一步做所有事情:打开文件->进程->关闭然后下一步... 简而言之,首先检查您的代码和工作表名称,然后进行简化步骤。

© www.soinside.com 2019 - 2024. All rights reserved.