Python xlrd XLRDError: Workbook is encrypted 解决方式

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

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

  • 9
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值