Как отключить оповещение об обновлении ссылок с помощью xlwings - PullRequest
2 голосов
/ 13 июня 2019

Я взаимодействую с файлами Excel в Python, используя API xlwings. Некоторые файлы Excel, с которыми я взаимодействую, имеют старые ссылки, которые приводят к появлению приглашения при открытии файла с вопросом, хочет ли пользователь обновить ссылки. Это приводит к бесконечному зависанию кода на строке, открывшей книгу, пока пользователь не закроет это приглашение. Есть ли способ изменить настройки файла Excel, чтобы это приглашение не отображалось или оно автоматически отклонялось без открытия самого файла?

Я пытался использовать метод xlwings:

xlwings.App.display_alerts = False

для подавления приглашения, но, насколько я могу судить, это можно запустить только для экземпляра Excel после его открытия. Существуют некоторые API-интерфейсы Excel, для которых не требуется открывать файл для чтения таких данных, как xlrd, но они не очень удобны для чтения и копирования больших объемов данных (нескольких / полных листов данных).

Следующий код демонстрирует проблему:

import xlwings as xw

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

print('Done')

В обычном файле Excel код обрабатывается и печатает «Готово» без вмешательства пользователя, но в файле Excel, где появляется запрос «обновить ссылки», он не будет переходить к оператору печати до появления запроса. уволен пользователем.

1 Ответ

1 голос
/ 13 июня 2019

Расширение с первой попытки - вы не обрабатываете экземпляр приложения, а пытаетесь присвоить классу 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...