首页 > 解决方案 > 如何在python中读取/打开受密码保护的xlsx文件

问题描述

我使用成功解密了 xlsx 文件 cmd = "msoffcrypto-tool hello.xlsx decrypted.xlsx -p erh1" os.system(cmd)

但是当我使用打开decrypted.xlsx wb = load_workbook(inputFilePath, data_only=True)

我收到很少的警告和错误,但它打开得很好,我想删除这些错误

  _convert 中的文件“/home/muhammadu/.local/lib/python3.8/site-packages/openpyxl/descriptors/base.py”,第 55 行
    值 = 预期类型(值)
ValueError:无法将字符串转换为浮点数:'(#REF!-40)'

在处理上述异常的过程中,又出现了一个异常:

回溯(最近一次通话最后):
  parse_formatting 中的文件“/home/muhammadu/.local/lib/python3.8/site-packages/openpyxl/worksheet/_reader.py”,第 280 行
    cf = ConditionalFormatting.from_tree(element)
  文件“/home/muhammadu/.local/lib/python3.8/site-packages/openpyxl/descriptors/serialisable.py”,第 87 行,在 from_tree
    obj = desc.expected_type.from_tree(el)
  文件“/home/muhammadu/.local/lib/python3.8/site-packages/openpyxl/descriptors/serialisable.py”,第 87 行,在 from_tree
    obj = desc.expected_type.from_tree(el)
  文件“/home/muhammadu/.local/lib/python3.8/site-packages/openpyxl/descriptors/serialisable.py”,第 87 行,在 from_tree
    obj = desc.expected_type.from_tree(el)
  文件“/home/muhammadu/.local/lib/python3.8/site-packages/openpyxl/descriptors/serialisable.py”,第 103 行,在 from_tree
    返回 cls(**attrib)
  __init__ 中的文件“/home/muhammadu/.local/lib/python3.8/site-packages/openpyxl/formatting/rule.py”,第 57 行
    自我.val = val
  文件“/home/muhammadu/.local/lib/python3.8/site-packages/openpyxl/formatting/rule.py”,第 36 行,在 __set__
    super(ValueDescriptor, self).__set__(instance, value)
  文件“/home/muhammadu/.local/lib/python3.8/site-packages/openpyxl/descriptors/base.py”,第 67 行,在 __set__
    value = _convert(self.expected_type, value)
  _convert 中的文件“/home/muhammadu/.local/lib/python3.8/site-packages/openpyxl/descriptors/base.py”,第 57 行
    raise TypeError('expected' + str(expected_type))
类型错误:预期 <class 'float'>

  警告(味精)
/home/muhammadu/.local/lib/python3.8/site-packages/openpyxl/worksheet/_reader.py:300:用户警告:不支持数据验证扩展,将被删除
  警告(味精)
/home/muhammadu/.local/lib/python3.8/site-packages/openpyxl/worksheet/_reader.py:300:用户警告:不支持条件格式扩展,将被删除
  警告(味精)

或者有没有其他方法可以使用 python 解密 xlsx ?我用了msoffcrypto-tool

标签: pythonpandasencryptionopenpyxlxlsx

解决方案


如果您有一行以 开头xlwb,则应确保在其后有正确的代码。

要打开受保护的文件,您应该:

xlwb = xlApp.Workbooks.Open(filename, False, True, None, password)

这应该会奏效。


推荐阅读