退出XLSM时,对话框打开,DisplayAlerts不起作用

时间:2019-01-31 13:07:45

标签: python excel exit win32com xlsm

应用程序关闭时,如果我要保存文件,则会弹出显示。我不想保存文件并希望它自动关闭。

我以为DisplayAlerts = False可以胜任工作,但行不通

if os.path.exists("file_name.xlsm"):
    xl=win32com.client.Dispatch("Excel.Application")
    xl.Workbooks.Open(os.path.abspath("file_name.xlsm"))
    xl.Application.Run("module.module")
    sht.range('A1').value = 11
    xl.DisplayAlerts = False 
    xl.Application.Quit() 
    del xl

1 个答案:

答案 0 :(得分:0)

来自the documentation

  

如果使用此方法时未保存的工作簿已打开,Microsoft Excel将显示一个对话框,询问您是否要保存更改。您可以通过在使用Quit方法之前保存所有工作簿或将DisplayAlerts属性设置为 False 来防止此问题。当此属性为 False 时,当您退出未保存的工作簿时,Microsoft Excel不会显示对话框。它退出而不保存它们。

     

如果将工作簿的Saved属性设置为 True 而不将工作簿保存到磁盘,Microsoft Excel将退出而不要求您保存工作簿。

也就是说,您正在做的事情应该正常工作,并且在我的测试中确实可以正常工作(只需通过COM打开Excel,将xl.Visible设置为True,然后创建一个新的工作簿,对其进行更改,然后尝试在将DisplayAlerts设置为False和不设置Saved的情况下关闭应用程序。

从这里开始,您可以尝试

    根据文档建议,为每个打开的工作簿
  • True设置为Application.EnableEvents = False,或者
  • REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticatedOrReadOnly', ), 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework_jwt.authentication.JSONWebTokenAuthentication', 'rest_framework.authentication.SessionAuthentication', 'rest_framework.authentication.BasicAuthentication', ), } JWT_AUTH = { 'JWT_ALLOW_REFRESH': True, 'JWT_EXPIRATION_DELTA': datetime.timedelta(seconds=3600), }

退出之前。