Обновление подключений в excel на python

Подскажите как с помощью win32com.client или другой библиотеки на python обновить подключения к oracle db в excel? Пробовал RefreshAll(), но у меня подключение защищено паролем, поэтому через RefreshAll() не получается обновить

xlapp = win32com.client("Excel.Application")

wb = xlapp.workbooks.open('filepath')

wb.RefreshAll()


Ответы (1 шт):

Автор решения: EkaterinaSS

нашла вот такое решение, у меня работает. Обращаю внимание, скрипт актуален для сводных таблиц, которые строятся на данных из Oracle. Для обычных таблиц нужно использовать какой-то другой объект листа Ексель (тут не подскажу, кто знает название объекта - пишите в комментариях, всем будет полезно).

   import win32com.client 
    
    office = win32com.client.Dispatch("Excel.Application") 
    wb = office.Workbooks.Open("FPath/FName.xlsx") 
    
    connCount=wb.Connections.Count
    for k in range(1,connCount+1):
    wb.Connections(k).OLEDBConnection.Connection="OLEDB;Provider=OraOLEDB.Oracle.1;Persist Security Info=True;User ID=YourUserID;password=YourPassword;Data Source=YourDataSource"
        
    count = wb.Sheets.Count 
    for i in range(count): 
        ws = wb.Worksheets[i+1] 
        pivotCount = ws.PivotTables().Count 
        for j in range(1, pivotCount+1): 
            ws.PivotTables(j).PivotCache().Refresh() 
            print("Worksheet " + ws.Name + " updated")  
    
    for k in range(1,connCount+1):
        wb.Connections(k).OLEDBConnection.SavePassword = False
      
    office.Save()
    wb.Close()
    office.Quit()
→ Ссылка