我正在使用xlwings api与Python中的Excel文件交互。我正在与之交互的一些Excel文件具有旧链接,当文件打开时会出现提示,询问用户是否要更新链接。这会导致代码无限期地挂在打开书本的行上,直到用户关闭此提示。是否有方法修改Excel文件的设置以使此提示不会出现,或在不打开实际文件的情况下自动取消提示?
我试过使用xlwings方法:
xlwings.App.display_alerts = False
以取消提示,但据我所知,这只能在Excel实例打开后运行。有些Excel api不需要打开文件就可以读取xlrd之类的数据,但它们不太方便读取和复制大量数据(多张/整张数据表)。
以下代码演示了该问题:
import xlwings as xw
wb = xw.Book(r'C:\Path\To\File\Filename')
print('Done')
在普通的Excel文件中,代码在不需要用户干预的情况下继续运行并打印“Done”,但是在出现“update links”提示的Excel文件中,在用户取消该提示之前,代码不会继续运行print语句。
最佳答案
扩展您的第一次尝试——您没有处理应用程序实例,而是试图分配给xlwings.App
类。
但是,似乎在display_alerts
中的xlwings
doesn't successfully suppress this alert,请尝试以下操作:
import xlwings as xw
app = xw.App(add_book=False)
app.display_alerts = False
wb = app.books.api.Open(fullpath, UpdateLinks=False)