Обновление подключений в 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()