openpyxl3.0官方文档(35)—— 文档保护

2020-07-15  本文已影响0人  Sinchard

请注意,使用密码保护工作簿或工作表只能提供基本的安全性。工作簿或工作表中的数据并没有加密,可以通过多种免费工具进行修改。事实上,规范声明:工作表或工作簿文档保护功能不应与文件安全性混淆。它旨在使工作簿免受无意修改的影响,无法保护工作簿免受恶意修改的影响。
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 = '...'
    
上一篇下一篇

猜你喜欢

热点阅读