Skip to main content
 首页 » 编程设计

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

2025年05月04日11傻小

我还没有找到很多关于使用 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