有没有办法使用 openpyxl 或 xlsxwriter 来保护工作簿?
Is there a way to protect workbooks using openpyxl or xlswriter?
我正在尝试自动生成 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 文件。如果有任何我遗漏的解决方案或要点,请告诉我。
来自这段代码:
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
上测试
Xlsxwriter 可以选择使用命令 worksheet.protect() 保护工作簿(查看文档:https://xlsxwriter.readthedocs.io/worksheet.html)
但是考虑到这一点:
Worksheet level passwords in Excel offer very weak protection. They do
not encrypt your data and are very easy to deactivate. Full workbook
encryption is not supported by XlsxWriter since it requires a
completely different file format and would take several man months to
implement.
我正在尝试自动生成 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 文件。如果有任何我遗漏的解决方案或要点,请告诉我。
来自这段代码:
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
上测试Xlsxwriter 可以选择使用命令 worksheet.protect() 保护工作簿(查看文档:https://xlsxwriter.readthedocs.io/worksheet.html)
但是考虑到这一点:
Worksheet level passwords in Excel offer very weak protection. They do not encrypt your data and are very easy to deactivate. Full workbook encryption is not supported by XlsxWriter since it requires a completely different file format and would take several man months to implement.