【问题标题】:openpyxl: password protect entire excel file (xlsx)openpyxl:密码保护整个excel文件(xlsx)
【发布时间】:2019-04-07 06:39:47
【问题描述】:

我正在尝试寻找 pythonic 方法来加密/密码保护 excel xlsx 文件。遇到了 openpyxl,在他们的文档 (https://openpyxl.readthedocs.io/en/stable/protection.html) 中声明它可以这样做。

但是,当我执行以下操作时,会提示错误消息AttributeError: 'NoneType' object has no attribute 'workbookPassword'。帮助任何人?

from openpyxl import workbook

file = 'test.xlsx' // an existing xlsx
wb = load_workbook(filename = file)

wb.security.workbookPassword = 'test_password'
wb.security.lockStructure = True

编辑: 我相信我不正确地使用了该功能,尽管在他们的文档中并不清楚。还提到可以使用此函数openpyxl.workbook.protection.WorkbookProtection.workbookPassword() 设置密码,然后在他们的示例中有所不同。

【问题讨论】:

  • 检查你使用的openpyxl的版本。
  • 我今天刚安装,所以它是最新的。刚刚也检查了
  • from openpyxl import __version__ __version__ '2.5.10' from openpyxl import load_workbook wb = load_workbook("Openpyxl Test.xlsx") wb.security.workbookPassword = "hshs"
  • 谢谢。我查了一下,最新的版本似乎是 2.5.9?尝试将要安装的版本指定为 2.5.10,但失败了...如果您能澄清一下,请感谢?
  • 这是我的本地开发版本,但不相关。我只是在演示代码按预期工作,问题一定出在您的安装上。

标签: excel openpyxl password-protection


【解决方案1】:

您正在谈论以同义方式“加密/密码保护 excel xlsx 文件”的方法。但是,请注意,对于 MS Office,这些是相同的(尽管有人可能会争论这里的措辞)!这可以从下面的屏幕截图中看出,或者只是打开一个 excel 文件并转到“文件”,然后在“权限”下单击“保护工作簿”。

Screenshot Excel Protection

openpyxl 中的 workbookPassword 仅防止修改工作簿 结构。他们的文档指出,这只是意味着

为了防止其他用户查看隐藏的工作表,添加、移动、 删除或隐藏工作表以及重命名工作表,您可以 使用密码保护工作簿的结构

另请参阅他们的文档here

这仅指结构,即添加/删除工作表,但它明确不禁止用户阅读文件,也不禁止编辑(已经可用的)工作表的内容!但是,设置的密码不提供加密意义上的读取保护。

我还没有找到使用 openpyxl 实际加密 Excel 文件的方法,但其他软件包可能会这样做。我知道加密的文件可以使用 Python 解密,参见例如this post。因此,我猜你也可以用类似的方式加密这些文件,虽然很遗憾我现在无法测试这个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 2019-05-06
    • 2010-10-29
    相关资源
    最近更新 更多