【问题标题】:Python Script to Automate Refreshing an Excel Spreadsheet用于自动刷新 Excel 电子表格的 Python 脚本
【发布时间】: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。

标签: python excel automation refresh


【解决方案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有关。
  • 感谢您的解决方案回答了我的第一个请求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多