openpyxl:如何对整个Excel文件(xlsx)进行密码保护

3
我正在寻找一种用Python加密/密码保护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(),这与他们的示例不同。


检查您正在使用的openpyxl版本。 - Charlie Clark
我今天刚安装了它,所以这是最新的。我也刚刚检查过。 - Jake
from openpyxl import __version__ __version__ '2.5.10' from openpyxl import load_workbook wb = load_workbook("Openpyxl Test.xlsx") wb.security.workbookPassword = "hshs" - Charlie Clark
即使我使用3.0.9版本也出现了与OP相同的错误消息。 有没有解决方案? - The Great
@Jake - 你能告诉我你是如何解决这个问题的吗?我也遇到了完全相同的错误。 - The Great
显示剩余2条评论
1个回答

0

您正在讨论以同义方式“加密/密码保护Excel xlsx文件”的方法。但请注意,就 MS Office 而言,它们并不相同(尽管在措辞上可能会有争议)!这可以从下面的屏幕截图中看出,或者只需打开一个 Excel 文件,然后转到“文件”,然后在权限下单击“保护工作簿”。

Excel 保护屏幕截图

openpyxl 中的 workbookPassword 只能防止对工作簿结构的修改。他们的文档说明,这仅意味着:

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

请参见他们的文档此处

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接