如何用Python编辑已知密码的受保护Excel(xlsx)文件
已知密码的加密Excel(xlsx)文件编辑方案
已知密码但无法直接修改加密xlsx文件时,核心思路是先解密获取可编辑副本,修改后重新加密,以下是两种可行的Python实现方案:
方案1:跨平台通用(msoffcrypto-tool + openpyxl)
借助msoffcrypto-tool解密加密文件,用openpyxl完成内容编辑,最后重新加密保存。
安装依赖
pip install msoffcrypto-tool openpyxl
完整代码
import msoffcrypto from openpyxl import load_workbook import io # 1. 读取并解密加密文件 with open("encrypted_file.xlsx", "rb") as f: office_file = msoffcrypto.OfficeFile(f) office_file.load_key(password="your_password") # 替换为实际密码 decrypted_data = io.BytesIO() office_file.decrypt(decrypted_data) # 2. 加载解密文件并编辑内容 decrypted_data.seek(0) wb = load_workbook(decrypted_data) ws = wb.active # 示例修改操作 ws["A1"] = "Updated content" ws["B2"].value = 999 # 3. 保存修改后的内容到内存流 modified_data = io.BytesIO() wb.save(modified_data) modified_data.seek(0) # 4. 重新加密并输出文件 with open("updated_encrypted_file.xlsx", "wb") as f: new_office_file = msoffcrypto.OfficeFile(modified_data) new_office_file.load_key(password="your_password") # 可设原密码或新密码 new_office_file.encrypt(f, password="your_password")
方案2:Windows专属(pywin32)
直接调用本地Excel COM对象,模拟人工操作打开加密文件、修改、保存,无需手动处理解密加密流程。
安装依赖
pip install pywin32
完整代码
import win32com.client as win32 # 启动Excel后台进程 excel = win32.gencache.EnsureDispatch('Excel.Application') excel.Visible = False # 打开加密文件 wb = excel.Workbooks.Open("encrypted_file.xlsx", Password="your_password") ws = wb.ActiveSheet # 执行修改 ws.Range("A1").Value = "Modified via pywin32" ws.Cells(3, 3).Value = "New data" # 保存(覆盖原文件或另存为) wb.Save() # 直接覆盖原加密文件 # wb.SaveAs("new_encrypted_file.xlsx", Password="your_password") # 另存为新加密文件 # 清理资源 wb.Close() excel.Quit()
关键注意事项
msoffcrypto-tool仅支持Office Open XML格式(xlsx),老版xls文件不兼容。pywin32方案要求本地安装Excel软件,且版本需与库兼容。- 操作前务必备份原文件,避免数据丢失。
内容的提问来源于stack exchange,提问作者Bireysel Finans
相关产品推荐
相关产品推荐

