我还没有找到很多关于使用 Python 创建密码保护的 Excel 文件的主题。
在 Openpyxl 中,我确实找到了一个 SheetProtection 模块,使用:
从 openpyxl.worksheet 导入 SheetProtection
但是,问题是我不确定如何使用它。它不是 Workbook 或 Worksheet 的属性,所以我不能只这样做:
wb = Workbook()
ws = wb.worksheets[0]
ws_encrypted = ws.SheetProtection()
ws_encrypted.password = 'test'
...
有谁知道这样的请求是否可以用 Python 实现?谢谢!
请您参考如下方法:
这是我使用的解决方法。它会生成一个 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
