无法保存Excel的更新版本

时间:2019-06-19 06:20:00

标签: python excel python-3.6 excel-2016

我有一个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脚本),则“刷新”有效,然后手动单击“保存”。它会更新。但是使用上面的代码,它不会保存更新的版本。

请告知。

1 个答案:

答案 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()