Как заставить Excel RefreshAll ждать до закрытия?

Я пытаюсь обновить файл Excel со следующим скриптом Python:

xl = Dispatch('Excel.Application') workbook = xl.Workbooks.open('\\path\to\workbook.xlsx') xl.Visible = True workbook.RefreshAll() xl.Quit() 

Однако фоновый запрос (связанный с базой данных SQL) требует времени для обновления.

Как предотвратить закрытие этой таблицы перед завершением RefreshAll?

Для «запросов» и сводных таблиц вы можете это сделать. Вам нужно пройти через каждую таблицу sheet & query / pivot **, чтобы установить обновление фона в False, поскольку это свойство самой таблицы (а не на уровне рабочей книги, скажем. )

** Для сводных таблиц сводные таблицы в модуле Python не кажутся итерабельными, поэтому вместо этого я в основном устанавливаю счетчик (при необходимости настраиваю), чтобы посмотреть максимальное (ожидаемое!) Количество сводных таблиц на листе (я установил это до 5). Это останавливается, если он не находит сводную таблицу на индексный номер от 1 до 5. (Предполагается, что индексы непрерывны от 1 до, и вы не можете, например, иметь сводные таблицы (1), но иметь сводные таблицы (2) Если это ложь, пожалуйста, исправьте мой ответ!

 for sheet in workbook.Sheets: print(sheet.name) for table in sheet.QueryTables: print("Found a query table on %s called %s" % (sheet.name, table.name)) table.BackgroundQuery = False # ie: disable background query, and therefore cause Excel to 'wait' until it's done refreshing if table.Refresh() == True: # This both refreshes the table, AND if the Refresh() method returns True (ie: refreshes successfully), tells you so. print("Query table %s refreshed!" % table.name) else: print("Query table %s FAILED to refresh." % table.name) for i in range(1,5): try: print("Found pivot table #%s called %s" % (i,sheet.PivotTables(i).Name)) if sheet.PivotTables(i).RefreshTable()==True: print("Refreshed pivot table %s" % sheet.PivotTables(i).Name) else: print("FAILED to refresh pivot table %s" % sheet.PivotTables(i).Name) except: print("No pivot table #%s found on sheet %s" % (i,sheet.Name)) break # Break out of the for loop, since there's no point in continuing the search for pivots, I believe (but could be wrong about that! Try creating two pivots, then deleting the first. Does the second become PivotTables(1), or stay as 2?) 
  • Реально ли редактировать db электронной коммерции с помощью Excel?
  • как извлечь несколько записей, сравнив уникальный идентификатор в mySQL
  • Комбинирование таблиц в Excel с использованием VBA и ADODB
  • Не удалось прочитать метку времени из Excel в мастер импорта импорта SQL
  • Excel - поиск и замена различных строк
  • Как ADO.NET можно заставить выводить тип столбцов Excel как String, а не Double?
  • Номера SSRS отображаются не так, как в Excel
  • Получение разных ошибок при импорте файла Excel через SqlBulkCopy
  • Нужно ли проверять тип данных перед вставкой данных Excel в таблицу sql через код C # .net?
  • Приостановка графика Excel во время обновления данных
  • Доступ к SQL Excel для ввода в запрос
  • Давайте будем гением компьютера.