用于自动刷新 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 2016 Power Query无法加载到电子表格
使用 Python 打开 Excel 电子表格 (.xlsx)
如何使用 Excel 电子表格中的数据在 Access 中自动填充表单