如何用Python编辑仅需密码修改的只读保护Excel文件
用Openpyxl编辑仅需编辑密码的Excel文件
你碰到的是Excel的工作表保护(不是整个文件加密),msoffcrypto只处理需要密码才能打开的文件级加密,所以不管用。下面是用Openpyxl解决的两种方法:
方法1:知道密码时直接移除保护编辑
如果有编辑密码,直接用Openpyxl解锁工作表,编辑完还能重新加保护:
from openpyxl import load_workbook # 加载目标Excel文件 wb = load_workbook("protected_edit.xlsx") # 选择要编辑的工作表(这里选第一个,也可以用ws = wb["工作表名"]) ws = wb.active # 输入密码移除工作表保护 ws.protection.unprotect(password="Passw0rd") # 执行编辑操作,比如修改A1单元格 ws["A1"] = "已修改内容" # 可选:编辑完重新添加保护,可设置新密码 ws.protection.password = "NewPass123" ws.protection.enable() # 保存修改后的文件 wb.save("edited_file.xlsx")
方法2:不知道密码时绕过旧版保护(仅适用于Excel 2010及更早版本)
注意:这个方法只对旧版Excel的弱哈希保护有效,新版Excel的保护绕不开,而且要确保操作合规:
from openpyxl import load_workbook from openpyxl.utils import hash_password wb = load_workbook("protected_edit.xlsx") ws = wb.active # 生成空密码的哈希值,替换原保护的哈希 ws.protection._password = hash_password("") # 现在可以自由编辑内容了 ws["C3"] = "绕过保护后的修改内容" wb.save("bypassed_file.xlsx")
注意事项
- 工作表保护只是防止误操作,不是强加密,不要用这些方法处理涉及敏感数据的文件。
- 编辑后如果需要保留保护,记得重新设置密码并启用。
内容的提问来源于stack exchange,提问作者Kirilas
相关产品推荐
相关产品推荐

