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

使用Python移除XLSB文件密码时遇只读模式保存错误求助

解决XLSB文件密码移除时的只读保存错误

错误原因

报错提示文件以只读模式打开,无法覆盖保存。这通常是因为原文件被其他进程占用、文件系统权限限制,或是Excel打开加密文件时的隐性锁定机制,导致无法直接覆盖原文件。

修正方案

通过临时文件中转的方式,先保存解密后的文件到临时路径,关闭工作簿后再替换原文件,规避直接覆盖的权限/锁定问题:

import win32com.client
import os
import shutil

file_path = 'M:\\Ejemplo\\Nombre_Archivo.xlsb'
temp_file = 'M:\\Ejemplo\\Temp_Nombre_Archivo.xlsb'
pw_str = 'Cardif2023'

excel = win32com.client.Dispatch('Excel.Application')
excel.DisplayAlerts = False
excel.Visible = False  # 后台运行Excel,避免弹窗干扰

# 打开加密文件,明确禁用只读模式
wb = excel.Workbooks.Open(file_path, ReadOnly=False, Password=pw_str)

# 另存为无密码的XLSB文件(FileFormat=50对应xlExcel12格式)
wb.SaveAs(temp_file, FileFormat=50, Password='', WriteResPassword='')

# 彻底关闭工作簿和Excel进程
wb.Close()
excel.Quit()

# 替换原文件
os.remove(file_path)
shutil.move(temp_file, file_path)

关键调整点

  • 临时文件中转:绕开直接覆盖原文件时的只读锁定限制
  • 明确指定文件格式:用FileFormat=50确保保存为XLSB二进制格式,避免格式自动变更
  • 清理Excel进程:关闭Excel实例,防止后台进程残留占用文件
  • 简化参数写法:使用命名参数提升代码可读性,避免位置参数混淆

额外注意事项

  • 确保原文件未被其他程序(如手动打开的Excel窗口)占用
  • 运行脚本的用户需拥有目标文件夹的读写权限
  • 操作前建议备份原文件,避免意外数据丢失

内容的提问来源于stack exchange,提问作者Kristian Rodríguez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 05:23:18