背景: 工作中需要自动化生成报告的时候,如果PDF 那就还好,如果需要Excel, 那么为了防止别人误触或者修改,以保留报告的原始真实性,这时候就需要对Excel 进行保护啦!😀
1. 首先openpyxl 会有Protection module:
Protection — openpyxl 3.0.9 documentation
仔细查看说明文档并做尝试之后发现,里面有两个部分:
- Workbook Protection
wb.security.workbookPassword = '...'
wb.security.lockStructure = True
可以设置你的密码, 这时候excel book 的structure 会被锁住, 新增sheet 的功能不会有~
然而! 每个sheet 里面的单元格还是可以修改! 这不是我想要的!让我们再看看第二个功能:
- Worksheet Protection
ws = wb.active
ws.protection.password = '...'
ws.protection.sheet = True
ws.protection.enable()
ws.protection.disable()
同样,这也不是我想要的, sheet name 不能被更改,但是cell 同样可以修改。
仔细阅读手册,也会发现, protection 的保护功能是最基本的,structure, sheet 保护。
经过一番的搜索尝试发现,如果要冻结整个cell, 可以使用 feeze_panes 功能 :
ws = wb.active
ws.protection.password = '...'
ws.freeze_panes = None
最后,祝你好运😀~