我试图使用以下代码通过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附加组件需要加载才能刷新此数据。我要去任务管理器去关闭excel.then,我要去options,(这里power query add-on已经加载了),禁用add -on,关闭excel,再次打开,重新加载add -on。
有没有人遇到过这种类型的问题,或者如何摆脱它。我的全部意图是通过某种类型的自动化,每天用外部数据刷新excel中的一些文件。
编辑:找到解决方案,在代码末尾添加以下行
import os
os.system("taskkill /f /im excel.exe")谢谢
发布于 2020-02-28 03:04:42
我知道这是一个老生常谈的问题,但我只是偶然遇到了它。在退出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任务,它们可能会造成问题。
https://stackoverflow.com/questions/46640552
复制相似问题