我正在尝试寻找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()
设置密码,然后在示例中有所不同。
答案 0 :(得分:0)
您正在谈论以同义方式“加密/密码保护excel xlsx文件”的方法。但是,请注意,关于MS Office,它们不相同(尽管有人可能会在此处争辩)!可以从下面的屏幕截图中看到,也可以打开一个excel文件并转到“文件”,然后在“权限”下单击“保护工作簿”。
openpyxl的workbookPassword仅阻止修改工作簿结构。他们的文档指出,这仅意味着
为防止其他用户查看隐藏的工作表,添加,移动, 删除或隐藏工作表,以及重命名工作表,您可以 使用密码保护工作簿的结构。
另请参阅其文档here。
这仅是指结构,即添加/删除工作表,但它明确禁止用户读取文件或编辑(已可用)工作表的内容!但是,从加密的角度来看,设置的密码不提供读取保护。
我还没有找到一种使用openpyxl实际加密Excel文件的方法,但是其他软件包可能会做到这一点。我知道加密的文件可以使用Python解密,例如this post。因此,我想您也可以以类似的方式对此类文件进行加密,尽管遗憾的是我现在无法对此进行测试。