首页 > 解决方案 > openpyxl:密码保护整个excel文件(xlsx)

问题描述

我正在尝试找到 pythonic 方法来加密/密码保护 excel xlsx 文件。遇到了 openpyxl,在他们的文档(https://openpyxl.readthedocs.io/en/stable/protection.html)中声明它可以这样做。

AttributeError: 'NoneType' object has no attribute 'workbookPassword'但是,当我执行以下操作时会提示错误消息。帮助任何人?

from openpyxl import workbook

file = 'test.xlsx' // an existing xlsx
wb = load_workbook(filename = file)

wb.security.workbookPassword = 'test_password'
wb.security.lockStructure = True

编辑:我相信我不正确地使用了该功能,尽管在他们的文档中并不清楚。还提到可以使用此功能设置密码openpyxl.workbook.protection.WorkbookProtection.workbookPassword(),这在他们的示例中有所不同。

标签: excelopenpyxlpassword-protection

解决方案


您正在谈论以同义方式“加密/密码保护 excel xlsx 文件”的方法。但是,请注意,对于 MS Office,这些是一样的(尽管有人可能会争论这里的措辞)!这可以从下面的屏幕截图中看出,或者只是打开一个 excel 文件并转到“文件”,然后在“权限”下单击“保护工作簿”。

截图 Excel 保护

openpyxl 中的 workbookPassword 仅防止修改工作簿结构。他们的文件指出,这只是意味着

为防止其他用户查看隐藏的工作表、添加、移动、删除或隐藏工作表以及重命名工作表,您可以使用密码保护工作簿的结构

另请参阅此处的文档。

这仅涉及结构,即添加/删除工作表,但它明确不禁止用户阅读文件,也不禁止编辑(已经可用的)工作表的内容!但是,设置的密码不提供加密意义上的读取保护。

我还没有找到一种使用 openpyxl 实际加密 Excel 文件的方法,但其他软件包可能会这样做。我知道加密的文件可以使用 Python 解密,请参见这篇文章。因此,我猜你也可以用类似的方式加密这些文件,但遗憾的是现在我无法测试这个。


推荐阅读