Excel - 通过 Python 刷新电源查询数据
Posted
技术标签:
【中文标题】Excel - 通过 Python 刷新电源查询数据【英文标题】:Excel - Power query data refresh via Python 【发布时间】:2017-10-09 07:07:05 【问题描述】:我正在尝试使用以下代码通过 Python 刷新电源查询 - Excel 中的外部数据
import win32com.client
import time
xl = win32com.client.DispatchEx("Excel.Application")
wb = xl.workbooks.open(fileName)
xl.Visible = True
wb.RefreshAll()
wb.Save()
xl.Quit()
它工作正常并且达到目的,除了,只有一次。 可见打开的 excel 文件关闭,但在任务管理器中它没有完全关闭。 虽然我对此没有太大问题,但当我尝试为下一个文件运行它时,“Power Query”插件停止加载,并且我收到错误消息, 需要加载电源查询插件才能刷新此数据。 我必须去任务管理器关闭excel。然后, 我必须去选项,(已经加载了电源查询插件),禁用插件,关闭excel,再次打开,重新加载插件。
请问有没有人遇到过这种类型的问题,或者如何摆脱它。 我的整个意图是通过某种自动化每天使用外部数据刷新 excel 中的一些文件。
编辑:找到解决方案,在代码末尾添加以下行
import os
os.system("taskkill /f /im excel.exe")
谢谢
【问题讨论】:
刚刚找到解决方案,以防其他人遇到麻烦。将以下行放在底部以杀死 excel。 import os os.system("taskkill /f /im excel.exe") 【参考方案1】:我知道这是一个老问题,但我只是遇到了它。您需要在退出 Excel 之前关闭 Excel 工作簿对象。奇怪的是,当您退出 Excel 对象时,Excel 工作簿仍保留在内存中并仍在运行——这有点令人困惑。您应该将 wb.Save() 命令替换为 wb.Close(True) 命令。
import win32com.client
import time
xl = win32com.client.DispatchEx("Excel.Application")
wb = xl.workbooks.open(fileName)
xl.Visible = True
wb.RefreshAll()
wb.Close(True)
xl.Quit()
也就是说,保留os.system("taskkill /f /im excel.exe")
作为备份也很好。我发现Close
和Quit
命令不是万无一失的,如果您不定期终止未完成的 Excel 任务,可能会导致问题。
【讨论】:
以上是关于Excel - 通过 Python 刷新电源查询数据的主要内容,如果未能解决你的问题,请参考以下文章