保护
警告
保护工作簿或工作表的密码仅提供了相当基本的安全性。数据未加密,因此可以使用任意数量的免费工具进行修改。实际上,该规范指出:“工作表或工作簿元素保护不应与文件安全性混淆。这旨在使您的工作簿免受意外修改的影响,并且不能保护其免受恶意修改。”
Openpyxl支持保护工作簿和工作表不被修改。除非明确配置了其他算法,否则Open XML“传统密码哈希算法”用于生成哈希密码值。
工作簿保护
为防止其他用户查看隐藏的工作表,添加,移动,删除或隐藏工作表以及重命名工作表,可以使用密码保护工作簿的结构。可以使用openpyxl.workbook.protection.WorkbookProtection.workbookPassword()属性设置密码
wb.security.workbookPassword = ‘…’
wb.security.lockStructure = True
同样,可以通过设置另一个密码来防止从共享工作簿中删除更改跟踪和更改历史记录。可以使用openpyxl.workbook.protection.WorkbookProtection.revisionsPassword()属性设置此密码
wb.security.revisionsPassword = ‘…’
openpyxl.workbook.protection.WorkbookProtection对象上的其他属性精确地控制了什么限制,但是只有设置了适当的密码后,这些属性才会实施。
如果需要在不使用默认哈希算法的情况下设置原始密码值,则提供特定的设置器功能-例如
hashed_password = …
wb.security.set_workbook_password(hashed_password, already_hashed=True)
工作表保护
也可以通过在openpyxl.worksheet.protection.SheetProtection对象上设置属性来锁定工作表的各个方面 。与工作簿保护不同,可以使用或不使用密码来启用工作表保护。使用openpxyl.worksheet.protection.SheetProtection.sheet属性或调用enable()或disable()可启用工作表保护 :
ws = wb.active
ws.protection.sheet = True
ws.protection.enable()
ws.protection.disable()
如果未指定密码,则用户无需指定密码即可禁用配置的工作表保护。否则,他们必须提供密码才能更改已配置的保护。使用openpxyl.worksheet.protection.SheetProtection.password()属性设置密码
ws = wb.active
ws.protection.password = ‘…’