请注意,使用密码保护工作簿或工作表只能提供基本的安全性。工作簿或工作表中的数据并没有加密,可以通过多种免费工具进行修改。事实上,规范声明:工作表或工作簿文档保护功能不应与文件安全性混淆。它旨在使工作簿免受无意修改的影响,无法保护工作簿免受恶意修改的影响。
Openpyxl支持保护工作簿和工作表不被修改功能。openpyxl使用Open XMLLegacy Password Hash算法
生成哈希密码值,除非您明确指定另一个算法。
工作簿保护¶
为了防止其他用户查看隐藏的工作表,添加、移动、删除或隐藏工作表或重命名工作表,可以使用密码来保护工作簿的结构。可以使用openpyxl.workbook.protection.WorkbookProtection.workbookPassword
属性:
>>> wb.security.workbookPassword = '...'
>>> wb.security.lockStructure = True
同样,可以通过设置另一个密码防止从sharedworkbook中删除更改跟踪和更改历史记录。可以使用openpyxl.workbook.protection.WorkbookProtection.revisionsPassword
属性来设置:
>>> wb.security.revisionsPassword = '...'
类:openpyxl.workbook.protection.WorkbookProtection
对象的其他属性提供来其他限制,但这些限制只有在设置了适当的密码后才能生效。
为了便于您在不使用默认哈希算法的情况下设置密码,openpyxl提供特定的设置方法,例如:
hashed_password = ...
wb.security.set_workbook_password(hashed_password, already_hashed=True)
工作表保护¶
工作表的很多内容都可以通过设置openpyxl.worksheet.protection.SheetProtection
类的属性来锁定。不像工作簿保护,可以不使用密码来实现工作表保护。可以通过调用openpxyl.worksheet.protection.SheetProtection.password()
或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 = '...'