有没有办法使用openpyxl或xlswriter保护工作簿?

时间:2019-12-12 15:26:05

标签: python excel python-3.x openpyxl xlsxwriter

我正在尝试使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文件。如果我错过了任何解决方案或要点,请告诉我。

2 个答案:

答案 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不支持加密,因为它要求   完全不同的文件格式,将需要几个月的时间   实施。