You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows环境下Xlwings解除工作表保护时程序无响应问题求助

xlwings解除工作表保护时程序无响应的解决方案

在Windows系统中使用xlwings执行代码时,解除工作表保护的步骤会导致程序陷入无响应状态,既不抛出异常,Excel也没有弹窗,但手动输入正确密码可以正常移除保护。相关代码如下:

with xw.App() as app:   
        
    wb = app.books.open(local_filename)
    alerts = wb.api.Application.DisplayAlerts  
    wb.api.Application.DisplayAlerts = False
    
    
    ws_data = wb.sheets["Data Input (Do not rename)"]
        
    if wb.api.ProtectStructure:
        wb.api.Unprotect(Password="xxx")
        
    if ws_data.api.ProtectContents:
        ws_data.api.unprotect(Password="xxx")  # 此处无限挂起

解决方案

  • 改用xlwings原生unprotect方法,避免直接调用底层API:
    将ws_data.api.unprotect(Password="xxx")替换为ws_data.unprotect(password="xxx"),原生方法已封装稳定的底层逻辑,减少冲突概率。

  • 规范设置display_alerts:
    直接通过app对象设置关闭提示,而非通过工作簿的API,避免上下文冲突:

    with xw.App(display_alerts=False) as app:
        wb = app.books.open(local_filename)
        ws_data = wb.sheets["Data Input (Do not rename)"]
        
        if wb.api.ProtectStructure:
            wb.unprotect(password="xxx")
            
        if ws_data.api.ProtectContents:
            ws_data.unprotect(password="xxx")
    
  • 确保以可编辑模式打开工作簿:
    打开文件时指定read_only=False,避免只读模式导致的保护解除异常:

    wb = app.books.open(local_filename, read_only=False)
    
  • 核对密码大小写:
    Excel保护密码区分大小写,确保代码中的密码与设置保护时完全一致,包括特殊字符和大小写格式。

内容的提问来源于stack exchange,提问作者smackenzie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 22:10:57