Обновление Excel с помощью Win32comPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Обновление Excel с помощью Win32com

Сообщение Anonymous »

def excel_refresh_query_replace(path, query_list = [], old_str = '', replace_str = '', index_update = False, max_bk_date = '', sub_list = []):

Код: Выделить всё

Application = Dispatch("Excel.Application")
#Application.DisplayAlerts = False

#opens the excel file
wb = Application.Workbooks.Open(path)

if wb.ReadOnly:
wb.Close(False)
try:
os.system("taskkill /f /im  excel.exe")
time.sleep(5)
except:
pass
return True

#if variables passed in then replace in query string
if query_list != []:
for query_name in query_list:
#existing query is initialized
current_q = wb.Queries(f"{query_name}").Formula
#replace string requires the new string as well as the old string to be replaces
new_q = current_q.replace(old_str,replacement_str)
wb.Queries(f"{query_name}").Formula = new_q

#refresh
wb.RefreshAll()
Application.CalculateUntilAsyncQueriesDone()

if sub_list != []:
for sub_name in sub_list:
Application.Run("sub_name")

#Updates the Index tab if required
if index_update:
wb.Sheets("Index").Range("E5").Value = f"Last Updated: {datetime.now().strftime('%d/%m/%Y')}"

if max_bk_date != '':
wb.Sheets("Index").Range("E6").Value = f"Last Booking Date Updated: {max_bk_date}"

#Save & Close
wb.Close(True)

try:
os.system("taskkill /f /im  excel.exe")
time.sleep(5)
except:
pass

return False
Эта функция работает нормально, но из-за большого объема данных при передаче нескольких запросов она не обновляет все файлы. Я обновляю около 500 файлов, и около 70 файлов не обновляются полностью. У меня возникает проблема «Данные не полностью загружены». Он обновляется совершенно нормально, когда я пытаюсь обновить отдельный запрос вручную. Любые предложения по обновлению запросов по отдельности.
Пробовал wb.Queries(f"{query_name}").Refresh(), но выдает следующую ошибку
wb.Queries( query_name).Refresh() Файл «», строка 2, в Refresh pywintypes.com_error: (-2147352567, «Произошло исключение.», (0, Нет, Нет, Нет, 0, -2146827284), Нет)< /p>
ps: я использую соединение для запроса с SQL-сервера

Подробнее здесь: https://stackoverflow.com/questions/790 ... g-win32com
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Обновление Excel с помощью Win32com
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Как я могу переключить фрагмент сводной таблицы в Excel с помощью win32com, Python?
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Автоматизация python xlwings или win32com Excel, доступная через ssh на сервере Windows 2016, не работает, доступ запрещ
    Anonymous » » в форуме Python
    0 Ответы
    48 Просмотры
    Последнее сообщение Anonymous
  • Excel с использованием Win32com и Python
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Установка метки чувствительности для Excel с использованием Win32com (Python)
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»