“保护工作簿”>“使用密码加密”功能相同)。 我遇到过 openpyxl,它提供的保护功能 (https://openpy-6ren">
gpt4 book ai didi

python - 使用 Python 密码保护 Excel 文件

转载 作者:太空宇宙 更新时间:2023-11-03 11:59:30 25 4
gpt4 key购买 nike

我正在尝试使用 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 对象操作:

wb_part = _find_workbook_part(self.package)
self.parser = WorkbookParser(self.archive, wb_part.PartName[1:], keep_links=self.keep_links)
self.parser.parse()
wb = self.parser.wb
...
self.wb = wb

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com