我是python的初学者。我在excel中写了几个DBQ语句来获取 导致excel,每当打开excel时都应该刷新。已在连接属性中给出了正确的设置。
Below is my python code for refreshall:-
import win32com.client
import time
xl = win32com.client.DispatchEx("Excel.Application")
wb = xl.workbooks.open("D:\\Excel sheets\\Test_consolidation.xlsx")
xl.Visible = True
time.sleep(10)
wb.Refreshall()
excel文件中有3张,有3种不同的连接。我想一个接一个地刷新。
有人可以帮我用python代码单独刷新连接吗?我非常感谢你的帮助。
答案 0 :(得分:1)
因此,如果你想要一个接一个地刷新所有这些,而不是wb.Refreshall()
,那么命令将是:
for conn in wb.connections:
conn.Refresh()
如果要链接(例如在字典中)与表单的连接:
dict_conn_sheet = {} # create a new dict
for conn in wb.connections: # iterate over each connection in your excel file
name_conn = conn.Name # get the name of the connection
sheet_conn = conn.Ranges(1).Parent.Name # get the name of the sheet linked to this connection
# add a key (the name of the sheet) and the value (the name of the connection) into the dictionary
dict_conn_sheet[sheet_conn] = name_conn
注意:如果一张表有多个连接,这不是一个好方法。
然后,如果您只想更新特定工作表上的一个连接(在我的示例中称为Sheet1):
sheet_name = 'Sheet1'
# refresh the connection linked to the sheet_name
# if existing in the dictionnary dict_conn_sheet
wb.connections(dict_conn_sheet[sheet_name]).Refresh()
最后,如果您直接知道要更新的连接的名称(比如说connection_Raj),只需输入:
name_conn = 'connection_Raj'
wb.connections(name_conn).Refresh()
我希望很明显,即使它没有完全回答你的问题,因为我不确定我明白你想做什么。