我正在尝试使用 Python 密码保护整个 Excel 文件(与"file">“保护工作簿”>“使用密码加密”功能相同)。
我遇到过 openpyxl,它提供的保护功能 (https://openpyxl.readthedocs.io/en/stable/protection.html) 似乎可以满足这一需求。我有以下代码:
from openpyxl import Workbook
from openpyxl import load_workbook
test_spreadsheet = "test.xlsx"
wb = load_workbook(test_spreadsheet)
wb.security.workbookPassword = "password"
但是,我收到以下错误:
AttributeError: 'NoneType' 对象没有属性 'workbookPassword'
有没有人知道是什么导致了这个 AttributeError?我已经从 wb 打印了工作表名称,并且正确地打印了我的 Excel 文档中的选项卡。
最佳答案
对于默认构造的工作簿,security
属性默认初始化:
self.security = DocumentSecurity()
但是,reading a workbook 构建的工作簿不仅仅是默认构造的;它们也由 Parser
对象操作:
Parser.init
执行 default-construct a Workbook
,然后用源文档的属性覆盖特定属性:
self.wb.security = package.workbookProtection
这意味着对于没有安全设置的文件,导入的工作簿对象的 security
属性的值为 None
(因此您的错误为 None
显然没有属性 workbookPassword
)。
然后您的解决方案是创建一个默认的 WorkbookProtection()
,将其分配给工作簿,然后设置工作簿密码。
关于python - 使用 Python 密码保护 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53618658/