保护¶
警告
保护工作簿或工作表的密码只提供相当基本的安全级别。数据没有加密,因此可以通过任意数量的免费可用工具进行修改。实际上,规范规定:“工作表或工作簿元素保护不应与文件安全性混淆。它的目的是使您的工作簿不受无意修改的影响,并且不能保护它不受恶意修改的影响。”
OpenPYXL支持保护工作簿和工作表不被修改。除非明确配置了另一个算法,否则open xml“legacy password hash algorithm”用于生成哈希密码值。
工作簿保护¶
要防止其他用户查看隐藏工作表、添加、移动、删除或隐藏工作表以及重命名工作表,可以使用密码保护工作簿的结构。可以使用 openpyxl.workbook.protection.WorkbookProtection.workbookPassword()
属性:
>>> wb.security.workbookPassword = '...'
>>> wb.security.lockStructure = True
同样,通过设置另一个密码,可以防止从共享工作簿中删除更改跟踪和更改历史记录。此密码可以使用 openpyxl.workbook.protection.WorkbookProtection.revisionsPassword()
属性:
>>> wb.security.revisionsPassword = '...'
上的其他属性 openpyxl.workbook.protection.WorkbookProtection
对象精确地控制有哪些限制,但只有在设置了适当的密码时才会强制执行这些限制。
如果需要在不使用默认哈希算法的情况下设置原始密码值,则提供特定的setter函数-例如:
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 = '...'