用于自动刷新 Excel 电子表格的 Python 脚本

Posted

技术标签:

【中文标题】用于自动刷新 Excel 电子表格的 Python 脚本【英文标题】:Python Script to Automate Refreshing an Excel Spreadsheet 【发布时间】:2018-12-10 06:33:08 【问题描述】:

我想自动刷新我的 Excel 文件。 目前我所拥有的代码并不完全令人满意,因为 Excel 每次都会要求我单击“取消”或“确定”。我在 Excel 文件中有两张工作表。

这是python代码:

import win32com.client as win32
Xlsx = win32.DispatchEx('Excel.Application')
Xlsx.DisplayAlerts = True
Xlsx.Visible = True
book = Xlsx.Workbooks.Open('C:/Test_Excel/Essai_1.xlsx')
# Refresh my two sheets
book.RefreshAll()
book.Save()
book.Close()
Xlsx.Quit()
del book
del Xlsx

如何在 Excel 不问我任何问题的情况下自动刷新 Excel 文件。

谢谢

【问题讨论】:

这台机器上没有要测试的 Excel,但将 DisplayAlerts 设置为 False (Xlsx.DisplayAlerts = False)。如果您的目标是阻止 Dialog 提示,则绝对不希望将其设置为 True。 【参考方案1】:

refreshall() 是一个异步函数,因此您需要等待它完成才能执行其他任何操作。您可以使用 Xlsx.CalculateUntilAsyncQueriesDone() 来完成此操作。

import win32com.client as win32
Xlsx = win32.DispatchEx('Excel.Application')
Xlsx.DisplayAlerts = True
Xlsx.Visible = True
book = Xlsx.Workbooks.Open('C:/Test_Excel/Essai_1.xlsx')
# Refresh my two sheets
book.RefreshAll()
Xlsx.CalculateUntilAsyncQueriesDone()# this will actually wait for the excel workbook to finish updating
book.Save()
book.Close()
Xlsx.Quit()
del book
del Xlsx

【讨论】:

太棒了。感谢您的解决方案,它非常有用。【参考方案2】:

尝试将Xlsx.DisplayAlerts = True 设置为Xlsx.DisplayAlerts = False,应该可以解决问题。

【讨论】:

我输入 Excel.DisplayAlerts = False 并且我没有确认消息了。但是,数据没有更新。 excel中的数据与PostgresSQL有关。 感谢您的解决方案回答了我的第一个请求。

以上是关于用于自动刷新 Excel 电子表格的 Python 脚本的主要内容,如果未能解决你的问题,请参考以下文章

用于 Excel 电子表格的 Pandas groupby

Excel 2016 Power Query无法加载到电子表格

使用 Python 打开 Excel 电子表格 (.xlsx)

如何使用 Excel 电子表格中的数据在 Access 中自动填充表单

如何使用 CarSource 模块自动从 Excel 电子表格中捕获数据?

excel电子表格中 想在输入的文字前面自动添加前缀文字怎么操作?