我试图通过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'附加组件停止加载,我得到错误说, 需要加载power query add-on才能刷新此数据。 我必须去任务经理关闭excel.then, 我必须去选项,(已经加载了电源查询插件),禁用添加-on,关闭excel,再次打开,重新加载插件。
请有任何人遇到过这种类型的问题,或者如何摆脱它。 我的目的是刷新excel中的一些文件,每天通过某种类型的自动化来提供外部数据。
编辑:找到解决方案,在代码末尾添加以下行
import os
os.system("taskkill /f /im excel.exe")
由于
答案 0 :(得分:1)
我知道这是一个古老的问题,但是我只是遇到了这个问题。在退出Excel之前,您需要关闭Excel Workbook对象。奇怪的是,当您退出Excel对象时,Excel Workbook仍保留在内存中并可以运行-这有点令人困惑。您应该用wb.Close(True)命令替换wb.Save()命令。
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任务,则会引起问题。