You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何使用Python/C#为Excel工作簿设置密码?

为 Excel 工作簿设置保护密码的 Python/C# 实现方案

Hey there! I've been in your shoes before—setting Excel workbook protection via Python/C# can feel tricky if you don't know the right libraries, but it's totally doable. Let me share the solutions I've used successfully:

Python 方案

使用 openpyxl(适用于 .xlsx 格式)

openpyxl 是处理 Excel xlsx 文件的常用库,它支持设置工作簿的打开密码和结构保护。这里是一个简单的示例:

from openpyxl import load_workbook
from openpyxl.workbook.protection import WorkbookProtection

# 加载现有工作簿
wb = load_workbook("your_workbook.xlsx")

# 设置工作簿打开密码 + 锁定结构(禁止修改工作表数量/顺序)
wb.security = WorkbookProtection(
    workbookPassword="your_secure_password",
    lockStructure=True
)

# 保存加密后的工作簿
wb.save("protected_workbook.xlsx")

注意:openpyxl 仅支持 .xlsx 格式,密码会被自动加密存储。如果不需要锁定结构,可去掉 lockStructure=True 参数。

使用 pywin32(COM 互操作,支持全格式)

如果你需要兼容 .xls 等旧格式,或者想复刻 VBA 的操作逻辑,用 pywin32 调用 Excel COM 对象是最可靠的选择:

import win32com.client as win32

# 启动后台运行的 Excel 进程
excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Visible = False

# 打开目标工作簿
wb = excel.Workbooks.Open(r"C:\path\to\your_workbook.xlsx")

# 设置打开密码和修改权限密码
wb.Password = "open_password"
wb.WriteResPassword = "modify_password"

# 保存并清理资源
wb.SaveAs(r"C:\path\to\protected_workbook.xlsx")
wb.Close()
excel.Quit()

注意:这个方法需要本地安装 Microsoft Excel,因为它依赖 Excel 的原生 COM 组件。

C# 方案

使用 EPPlus(适用于 .xlsx 格式)

EPPlus 是 .NET 生态中处理 Excel xlsx 文件的流行库,它支持设置工作簿保护密码:

using OfficeOpenXml;
using System.IO;

// 非商业用途设置许可证上下文(商业用途需购买官方许可证)
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

// 加载并处理工作簿
using (var package = new ExcelPackage(new FileInfo("your_workbook.xlsx")))
{
    // 设置工作簿打开密码
    package.Workbook.Protection.SetPassword("your_secure_password");
    
    // 可选:设置修改权限密码
    package.Workbook.Protection.SetRevisionsPassword("modify_password");
    
    // 保存加密后的文件
    package.SaveAs(new FileInfo("protected_workbook.xlsx"));
}

注意:EPPlus 5+ 版本对商业项目有许可证限制,个人或非商业项目可免费使用。

使用 Microsoft.Office.Interop.Excel(COM 互操作)

和 Python 的 pywin32 思路一致,C# 也可以通过 COM 互操作调用 Excel 完成密码设置:

using Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;

// 创建 Excel 应用实例
Application excelApp = new Application();
excelApp.Visible = false;

// 打开目标工作簿
Workbook workbook = excelApp.Workbooks.Open(@"C:\path\to\your_workbook.xlsx");

// 设置打开密码和修改权限密码
workbook.Password = "open_password";
workbook.WriteResPassword = "modify_password";

// 保存并清理资源
workbook.SaveAs(@"C:\path\to\protected_workbook.xlsx");
workbook.Close();
excelApp.Quit();

// 释放 COM 对象,避免内存泄漏
Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(excelApp);

注意:此方法需要本地安装 Microsoft Excel,发布时需考虑目标机器的 Excel 版本兼容性。

Hope these solutions work for you—let me know if you run into any snags with the code!

内容的提问来源于stack exchange,提问作者Aviad Amar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:39:12