【问题标题】:Excel - Power query data refresh via PythonExcel - 通过 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")

标签: python excel vba powerquery


【解决方案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") 作为备份也很好。我发现CloseQuit 命令不是万无一失的,如果您不定期终止未完成的 Excel 任务,可能会导致问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-17
    • 2020-05-26
    • 2021-10-25
    • 2021-12-02
    • 1970-01-01
    • 2015-08-31
    • 2014-06-28
    • 2012-06-05
    相关资源
    最近更新 更多