如何使用 xlwings 抑制“更新链接”警报

Oli*_*Oli 3 python excel

我正在使用 xlwings api 与 Python 中的 Excel 文件进行交互。我正在与之交互的某些 Excel 文件具有旧链接,这会导致在打开文件时出现提示,询问用户是否要更新链接。这会导致代码无限期地挂在打开这本书的行上,直到用户关闭此提示。有没有办法修改Excel文件的设置,这样就不会出现这个提示,或者在不打开实际文件的情况下自动关闭?

我曾尝试使用 xlwings 方法:

xlwings.App.display_alerts = False
Run Code Online (Sandbox Code Playgroud)

取消提示,但据我所知,这只能在 Excel 实例打开后运行。有一些 Excel api 不需要打开文件即可读取 xlrd 等数据,但它们对于读取和复制大量数据(多张/整张数据)并不是很方便。

下面的代码演示了这个问题:

import xlwings as xw

wb = xw.Book(r'C:\Path\To\File\Filename')

print('Done')
Run Code Online (Sandbox Code Playgroud)

在常规 Excel 文件中,代码继续执行并打印“完成”而无需用户干预,但在出现“更新链接”提示的 Excel 文件中,它不会继续执行打印语句,直到提示被一个用户。

Dav*_*ens 5

扩展您的第一次尝试——您不是在处理 App 实例,而是在尝试分配给xlwings.App该类。

然而,似乎display_alerts没有成功抑制此警报xlwings,试试这个:

import xlwings as xw
app = xw.App(add_book=False)
app.display_alerts = False
wb = app.books.api.Open(fullpath, UpdateLinks=False)
Run Code Online (Sandbox Code Playgroud)

  • `xw.Book(impl=xw._xlwindows.Book(xl=wb))` 获取 xlwings 工作簿对象。Xlwings 是 pywin32 (Windows) 或 appscript (MacOSX) 的包装器,由于我们必须使用特定于实现的 COM API,因此我们必须导入私有“_xlwindows” (2认同)