使用Python刷新Excel外部数据

mk8*_*efz 6 python excel pandas

我有一个Excel文件,我运行Python脚本.Excel文件具有外部数据连接,需要在运行Python脚本之前刷新.我所指的功能在这里:

刷新外部数据

我正在使用Python 2.7并且依赖于Pandas进行大多数Excel数据解析.

Jul*_*rec 9

如果您使用的是Windows,并且我相信您已获得屏幕截图,则可以使用该win32com模块.它将允许您 - 从python - 打开Excel,加载工作簿,刷新所有数据连接,然后退出.语法最终非常接近VBA.

我建议你pypiwin32通过pip(pip install pypiwin32)安装.

import win32com.client

# Start an instance of Excel
xlapp = win32com.client.DispatchEx("Excel.Application")

# Open the workbook in said instance of Excel
wb = xlapp.workbooks.open(<path_to_excel_workbook>)

# Optional, e.g. if you want to debug
# xlapp.Visible = True

# Refresh all data connections.
wb.RefreshAll()
wb.Save()

# Quit
xlapp.Quit()
Run Code Online (Sandbox Code Playgroud)

  • 在调用`xlapp.Quit()之前尝试睡一会儿.多长时间取决于刷新运行的时间. (3认同)

小智 6

添加此作为答案,因为这是第一个 Google 链接 - 第一个答案中的代码有效,但大小写不正确,应该是:

import win32com.client
import time

xlapp = win32com.client.DispatchEx("Excel.Application")
wb = xlapp.Workbooks.Open(<path_to_excel_workbook>)
wb.RefreshAll()
time.sleep(5)
wb.Save()
xlapp.Quit()
Run Code Online (Sandbox Code Playgroud)


小智 6

CalculateUntilAsyncQueriesDone()将保存该程序,并等待刷新完成。

xlapp = win32com.client.DispatchEx("Excel.Application")
wb = xlapp.Workbooks.Open(<path_to_excel_workbook>)
wb.RefreshAll()
xlapp.CalculateUntilAsyncQueriesDone()
wb.Save()
xlapp.Quit()
Run Code Online (Sandbox Code Playgroud)