Python xlrd XLRDError: Workbook is encrypted 解决方式

mac2025-07-22  7

当打开受保护的工作簿时,会引发如下错误:

import xlrd book = xlrd.open_workbook('encrypted.xls')

Error:

Traceback (most recent call last): ... xlrd.biffh.XLRDError: Workbook is encrypted

当工作表被标记为受保护的工作表时会发生这种情况

注1:设置方式(Excel > 工具 > 保护 > 保护工作表/簿)

注2:设置保护工作表/簿时,密码为可选,若不设置密码,则会使用默认密码 'VelvetSweatshop' ,此密码后续将会使用到

但目前 xlrd 貌似无法直接处理此类带有保护的文件

针对此情况有两种解决方案:

1、手动撤销保护

打开 Excel 文件,选择工具 > 保护 > 撤销工作表/簿保护,输入密码撤销保护,再使用 xlrd 操作

2、若你有100+个Excel文件需要处理,方案1显然效率不高,需要进行批量撤销操作

这就需要使用到另一个 Python 库(msoffcrypto)来解密各种 MS Office 文件

 

以下为该库的GitHub地址:

https://github.com/nolze/msoffcrypto-tool

pip安装即可:

pip install msoffcrypto-tool

 以下为简要的使用方式,详细请参考GitHub:

import msoffcrypto file = msoffcrypto.OfficeFile(open('encrypted.xls', 'rb')) # 读取原文件 file.load_key(password='VelvetSweatshop') # 填入设置保护时设置的密码, 默认密码为 'VelvetSweatshop' file.decrypt(open('decrypted.xls', 'wb')) # 解密后保存为新文件, 新文件无保护,可直接使用 xlrd 读取内容

之后就可以使用xlrd正常打开并操作解密后的文件 decrypted.xls 了


参考:

stackoverflow:  https://stackoverflow.com/questions/22789951

最新回复(0)