如何在Python中为整个XLSX文件设置密码保护
为Excel文件设置全局密码保护的免费Python方案
以下是两个无需付费库的可行方案,解决你无法安装付费库的问题:
方案一:Windows环境下调用Excel COM接口(依赖本地Office)
利用Windows系统自带的COM接口直接操作Excel,实现全局加密,无需额外付费库,前提是你电脑上安装了Office Excel。
import win32com.client as win32 import os # 初始化Excel应用 excel = win32.gencache.EnsureDispatch('Excel.Application') # 创建新工作簿 wb = excel.Workbooks.Add() ws = wb.ActiveSheet # 写入测试数据 ws.Range("A1").Value = "用户数据1" ws.Range("B1").Value = "用户数据2" ws.Range("A2").Value = "用户数据3" ws.Range("B2").Value = "用户数据4" # 设置全局打开密码和修改权限密码(可设为同一密码) open_password = "your_open_pwd" modify_password = "your_modify_pwd" # 保存并加密文件 save_path = os.path.join(os.getcwd(), "protected_file.xlsx") wb.SaveAs(Filename=save_path, Password=open_password, WriteResPassword=modify_password) # 关闭Excel进程,避免后台残留 wb.Close() excel.Quit()
安装依赖:执行pip install pywin32即可,若安装失败,可到PyPI下载对应Python版本的whl文件手动安装。
方案二:跨平台加密(msoffcrypto-tool)
使用免费的msoffcrypto-tool库,先生成无密码的Excel文件,再对整个文件进行加密,支持Windows、Mac、Linux多平台。
import pandas as pd import msoffcrypto import os # 第一步:生成普通Excel文件(用pandas或openpyxl都可以) data = {"姓名": ["张三", "李四"], "年龄": [25, 30]} df = pd.DataFrame(data) temp_file = "temp_unprotected.xlsx" df.to_excel(temp_file, index=False) # 第二步:加密整个文件 with open(temp_file, "rb") as input_file: office_file = msoffcrypto.OfficeFile(input_file) office_file.load_key(password="your_global_pwd") # 设置全局密码 with open("protected_file.xlsx", "wb") as output_file: office_file.decrypt(output_file) # 可选:删除临时文件 os.remove(temp_file)
安装依赖:执行pip install msoffcrypto-tool pandas,若用openpyxl创建文件则替换为pip install msoffcrypto-tool openpyxl。
注意事项
- 若安装库时出现报错,优先检查Python版本与库版本是否兼容,比如确保使用的是较新的pip版本(执行
pip install --upgrade pip)。 msoffcrypto-tool支持绝大多数Excel格式(.xlsx、.xls、.xlsm等),旧版.xls文件加密需注意选择对应加密算法,但一般默认设置即可正常使用。
内容的提问来源于stack exchange,提问作者Camilo
相关产品推荐
相关产品推荐

