使用 Python 密码保护 Excel 文件

新手上路,请多包涵

我还没有找到很多关于使用 Python 创建密码保护的 Excel 文件的主题。

在 Openpyxl 中,我确实找到了一个 SheetProtection 模块,使用:

from openpyxl.worksheet import SheetProtection

但是,问题是我不确定如何使用它。它不是 WorkbookWorksheet 的属性,所以我不能只这样做:

 wb = Workbook()
ws = wb.worksheets[0]
ws_encrypted = ws.SheetProtection()
ws_encrypted.password = 'test'
...

有谁知道这样的请求是否可以用 Python 实现?谢谢!

原文由 dyao 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 866
1 个回答

这是我使用的解决方法。它生成一个 VBS 脚本并从您的 python 脚本中调用它。

 def set_password(excel_file_path, pw):

    from pathlib import Path

    excel_file_path = Path(excel_file_path)

    vbs_script = \
    f"""' Save with password required upon opening

    Set excel_object = CreateObject("Excel.Application")
    Set workbook = excel_object.Workbooks.Open("{excel_file_path}")

    excel_object.DisplayAlerts = False
    excel_object.Visible = False

    workbook.SaveAs "{excel_file_path}",, "{pw}"

    excel_object.Application.Quit
    """

    # write
    vbs_script_path = excel_file_path.parent.joinpath("set_pw.vbs")
    with open(vbs_script_path, "w") as file:
        file.write(vbs_script)

    #execute
    subprocess.call(['cscript.exe', str(vbs_script_path)])

    # remove
    vbs_script_path.unlink()

    return None

原文由 Michał Zawadzki 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题