【发布时间】:2017-07-20 16:29:06
【问题描述】:
我尝试使用 openpyxl 保护 Excel 工作簿。
到目前为止,我查看了不同的、可能相关的类,但我找不到像 worksheets 那样的 set_password 方法。
碰巧有一个workbook.protection 模块,我尝试了运气。我的代码,归结为绝对相关的最低限度如下:
from openpyxl import Workbook
from openpyxl.workbook.protection import WorkbookProtection
wb = Workbook()
wb.security = WorkbookProtection(workbookPassword='0000', revisionsPassword = '0000', lockWindows = True, lockStructure = True, lockRevision = True)
wb.create_sheet("testSheet")
wb.save("test.xlsx")
我没有收到任何错误,但也没有任何保护。任何帮助将不胜感激。
【问题讨论】:
-
我能找到的唯一保护是在工作表上,
wb["testSheet"].protection.set_password('test'),检查这个post。 -
会使用
load_workbook(file, read_only=True).get_sheet_names()创建一个列表,然后循环保护每个工作表吗? -
@PRMoureu 是的,正如我所说,我知道这一点,但找不到类似的工作簿方法。
-
@MattR 保护每张工作表与保护工作簿不同。在受保护的工作表中,单元格被保护不被编辑,但工作表本身仍然可以被编辑。在受保护的工作簿中,无法编辑工作表(例如重命名)。
-
这目前在 Openpyxl (v2.4.8) 中不起作用 - 密码不会写入输出文件。我正在为此进行 PR (bitbucket.org/openpyxl/openpyxl/pull-requests/180/…),因此希望它会包含在未来的版本中。