我有一个Excel工作表,该工作表与PowerQuery有数据连接。通常,我曾经单击“全部刷新”来更新数据。我想使它自动化,并编写了Python脚本来做到这一点。
但是,在Excel中,我在“连接属性”下找到了一个选项:“打开时刷新”。现在,当我打开工作表时,刷新会自动触发并更新数据。
从Python代码中,我打开此工作表并放置了sleep命令,以便它等待30秒,直到工作表自动刷新。之后,我将调用“另存为”以使用其他名称保存更新的工作表。
我正在使用以下代码:
import win32com.client
import time
# Start an instance of Excel
xlapp = win32com.client.DispatchEx("Excel.Application")
# Open the workbook in said instance of Excel
wb = xlapp.workbooks.open("test.xlsx")
# Optional, e.g. if you want to debug
# xlapp.Visible = True
time.sleep(30)
wb.SaveAs("New.xlsx")
# Quit
xlapp.Quit()
我注意到,即使在“另存为”之后,数据值也不会更新。如果我直接打开Excel(没有Python脚本),则“刷新”有效,然后手动单击“保存”。它会更新。但是使用上面的代码,它不会保存更新的版本。
请告知。
答案 0 :(得分:0)
您是否尝试过此方法,我想您上面的命令中缺少wb.RefreshAll()
命令:Refresh Excel External Data with Python
import win32com.client
import time
# Start an instance of Excel
xlapp = win32com.client.DispatchEx("Excel.Application")
# Open the workbook in said instance of Excel
wb = xlapp.workbooks.open("test.xlsx")
# Optional, e.g. if you want to debug
# xlapp.Visible = True
# Refresh all data connections.
wb.RefreshAll()
time.sleep(30)
wb.Save()
# Quit
xlapp.Quit()