如何在python中读取/打开受密码保护的xlsx文件

时间:2020-06-24 19:43:45

标签: python pandas encryption openpyxl xlsx

我使用

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

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

我收到的警告和错误很少,但可以正常打开,我想删除这些错误

  File "/home/muhammadu/.local/lib/python3.8/site-packages/openpyxl/descriptors/base.py", line 55, in _convert
    value = expected_type(value)
ValueError: could not convert string to float: '(#REF!-40)'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/muhammadu/.local/lib/python3.8/site-packages/openpyxl/worksheet/_reader.py", line 280, in parse_formatting
    cf = ConditionalFormatting.from_tree(element)
  File "/home/muhammadu/.local/lib/python3.8/site-packages/openpyxl/descriptors/serialisable.py", line 87, in from_tree
    obj = desc.expected_type.from_tree(el)
  File "/home/muhammadu/.local/lib/python3.8/site-packages/openpyxl/descriptors/serialisable.py", line 87, in from_tree
    obj = desc.expected_type.from_tree(el)
  File "/home/muhammadu/.local/lib/python3.8/site-packages/openpyxl/descriptors/serialisable.py", line 87, in from_tree
    obj = desc.expected_type.from_tree(el)
  File "/home/muhammadu/.local/lib/python3.8/site-packages/openpyxl/descriptors/serialisable.py", line 103, in from_tree
    return cls(**attrib)
  File "/home/muhammadu/.local/lib/python3.8/site-packages/openpyxl/formatting/rule.py", line 57, in __init__
    self.val = val
  File "/home/muhammadu/.local/lib/python3.8/site-packages/openpyxl/formatting/rule.py", line 36, in __set__
    super(ValueDescriptor, self).__set__(instance, value)
  File "/home/muhammadu/.local/lib/python3.8/site-packages/openpyxl/descriptors/base.py", line 67, in __set__
    value = _convert(self.expected_type, value)
  File "/home/muhammadu/.local/lib/python3.8/site-packages/openpyxl/descriptors/base.py", line 57, in _convert
    raise TypeError('expected ' + str(expected_type))
TypeError: expected <class 'float'>

  warn(msg)
/home/muhammadu/.local/lib/python3.8/site-packages/openpyxl/worksheet/_reader.py:300: UserWarning: Data Validation extension is not supported and will be removed
  warn(msg)
/home/muhammadu/.local/lib/python3.8/site-packages/openpyxl/worksheet/_reader.py:300: UserWarning: Conditional Formatting extension is not supported and will be removed
  warn(msg)

或者还有其他使用python解密xlsx的方法吗? 我使用了msoffcrypto-tool

1 个答案:

答案 0 :(得分:0)

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

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

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

那应该可以工作。