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

如何打开加密的xlsb文件?msoffcrypto解密报错解决方案咨询

问题:读取加密.xlsb文件触发DecryptionError

我用以下Python代码可正常打开加密的.xlsx文件:

path_to_my_file = r'filename.xlsx'
passwd = 'pwd'
import io
import msoffcrypto

decrypted_workbook = io.BytesIO()
with open(path_to_my_file , 'rb') as file:
    office_file = msoffcrypto.OfficeFile(file)
    office_file.load_key(password=passwd)
    office_file.decrypt(decrypted_workbook)

但用这段代码读取受密码保护的.xlsb文件时,出现如下错误:

DecryptionError                           Traceback (most recent call last)
Cell In[56], line 5
      3 office_file = msoffcrypto.OfficeFile(file)
      4 office_file.load_key(password=passwd)
----> 5 office_file.decrypt(decrypted_workbook)

File C:\ProgramData\anaconda3\Lib\site-packages\msoffcrypto\format\ooxml.py:287, in OOXMLFile.decrypt(self, outfile, verify_integrity)
    285     outfile.write(obuf)
    286 elif self.type == "plain":
--> 287     raise exceptions.DecryptionError("Unencrypted document")
    288 else:
    289     raise exceptions.DecryptionError("Unsupported encryption method")

DecryptionError: Unencrypted document
解决办法

这个报错的核心原因是.xlsb属于二进制Excel格式,msoffcrypto的基础OfficeFile类对其加密格式的识别存在问题,需要指定具体的文件类型处理类:

  • 直接调用msoffcrypto针对二进制Excel的OLEFile类
    修改代码如下:
import io
import msoffcrypto

path_to_my_file = r'filename.xlsb'
passwd = 'pwd'

decrypted_workbook = io.BytesIO()
with open(path_to_my_file, 'rb') as file:
    # 针对xlsb使用OLEFile而非OfficeFile
    office_file = msoffcrypto.OLEFile(file)
    office_file.load_key(password=passwd)
    office_file.decrypt(decrypted_workbook)
  • 验证文件加密状态
    如果仍报错,先检查文件是否真的设置了打开密码:
with open(path_to_my_file, 'rb') as file:
    office_file = msoffcrypto.OLEFile(file)
    print("文件是否加密:", office_file.is_encrypted())

若输出False,说明文件没有打开密码,可能只是工作表保护,这种情况需要用pandas配合openpyxl/xlwings等库处理工作表权限。

  • 更新依赖版本
    确保msoffcrypto-tool是最新版本,旧版本对xlsb的支持不完善:
pip install --upgrade msoffcrypto-tool

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 15:52:48