我正在尝试使Excel报表自动化,并且我希望用户不要尝试重命名或重新排列工作表。尽管使用xlsxwriter保护单个单元格没有问题,但是我没有看到保护工作簿本身的选项。我正在寻找openpyxl,但是该教程似乎没有任何效果。
编辑:我现在正在使用此代码块,但不会产生错误或保护我的工作簿。
from openpyxl import load_workbook
from openpyxl.workbook.protection import WorkbookProtection
workbook = load_workbook(filepath, read_only=False, keep_vba=True)
workbook.security = WorkbookProtection(workbookPassword = 'secret-password', lockStructure = True)
workbook.save(filepath)
顺便说一句,我正在处理.xlsm文件。如果我错过了任何解决方案或要点,请告诉我。
答案 0 :(得分:2)
通过此代码:
from openpyxl.workbook.protection import WorkbookProtection
myWorkbook.security = WorkbookProtection(workBookPassword = 'super-secret-password', lockStructure = True)
myWorkbook.save(filepath)
更改:
WorkbookProtection(workBookPassword = 'super-secret-password', lockStructure = True)
收件人:
WorkbookProtection(workbookPassword = 'super-secret-password', lockStructure = True)
workBookPassword
应该是workbookPassword
在Python32 3.8和OpenPyXL 3.0.2版上进行了测试
答案 1 :(得分:0)
Xlsxwriter可以选择使用worksheet.protect()命令保护工作簿(请查看文档:{{3}})
但是要考虑到这一点:
Excel中的工作表级别密码提供的保护非常弱。他们是这样 不加密您的数据,并且很容易停用。完整的工作簿 XlsxWriter不支持加密,因为它要求 完全不同的文件格式,将需要几个月的时间 实施。