C#怎么给Excel设置密码保护_C#如何加密电子表格文件

来源:编程学习作者:广州程序员头衔:程序员
导读:本期聚焦于小伙伴创作的《C#怎么给Excel设置密码保护_C#如何加密电子表格文件》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《C#怎么给Excel设置密码保护_C#如何加密电子表格文件》有用,将其分享出去将是对创作者最好的鼓励。

在C#开发中,给Excel文件设置密码保护是常见的安全需求,既可以设置打开文件时的验证密码,也可以设置工作表编辑的保护密码,防止文件内容被随意篡改。下面分别介绍两种主流的实现方案。

C#怎么给Excel设置密码保护_C#如何加密电子表格文件

方案一:使用NPOI库实现Excel加密

NPOI是免费开源的.NET Excel操作库,支持xls和xlsx格式的文件处理,无需安装Office环境即可使用。首先需要通过NuGet安装NPOI相关包,安装命令如下:

Install-Package NPOI
Install-Package NPOI.OOXML

1. 设置Excel打开密码

xlsx格式的文件设置打开密码的示例代码如下:

using NPOI.OpenXml4Net.OPC;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;

namespace ExcelEncryptDemo
{
    class NpoiEncrypt
    {
        public static void SetOpenPassword(string filePath, string password)
        {
            // 创建xlsx工作簿
            IWorkbook workbook = new XSSFWorkbook();
            // 创建一个工作表
            ISheet sheet = workbook.CreateSheet("数据页");
            // 添加示例数据
            IRow row = sheet.CreateRow(0);
            row.CreateCell(0).SetCellValue("测试数据1");
            row.CreateCell(1).SetCellValue("测试数据2");

            // 设置打开密码
            if (workbook is XSSFWorkbook xssfWorkbook)
            {
                // 获取OPC包
                OPCPackage opcPackage = xssfWorkbook.GetPackage();
                // 设置加密属性,指定打开密码
                opcPackage.EncryptionOption = EncryptionOption.AES_256;
                opcPackage.Password = password;
            }

            // 保存文件
            using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
            {
                workbook.Write(fs);
            }
        }
    }
}

2. 设置工作表保护密码

如果需要限制用户编辑工作表内容,可以设置工作表保护密码,示例代码如下:

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;

namespace ExcelEncryptDemo
{
    class NpoiProtect
    {
        public static void SetSheetProtectPassword(string filePath, string password)
        {
            IWorkbook workbook = new XSSFWorkbook();
            ISheet sheet = workbook.CreateSheet("保护页");
            // 添加示例数据
            IRow row = sheet.CreateRow(0);
            row.CreateCell(0).SetCellValue("受保护的内容");

            // 设置工作表保护密码,指定允许的操作
            sheet.ProtectSheet(password);
            // 可以单独设置允许的操作,比如允许选择单元格
            // sheet.ProtectSheet(password, true, true, true);

            using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
            {
                workbook.Write(fs);
            }
        }
    }
}

方案二:使用Spire.XLS库实现Excel加密

Spire.XLS是功能更全面的Excel操作库,支持更多高级功能,不过商业使用需要购买授权。首先通过NuGet安装Spire.XLS包:

Install-Package Spire.XLS

1. 设置Excel打开密码

Spire.XLS设置打开密码的代码更简洁,示例如下:

using Spire.Xls;
using System;

namespace ExcelEncryptDemo
{
    class SpireEncrypt
    {
        public static void SetOpenPassword(string filePath, string password)
        {
            // 创建工作簿实例
            Workbook workbook = new Workbook();
            // 添加一个工作表
            Worksheet sheet = workbook.Worksheets[0];
            sheet.Name = "数据页";
            // 添加示例数据
            sheet.Range["A1"].Text = "测试数据1";
            sheet.Range["B1"].Text = "测试数据2";

            // 设置打开密码
            workbook.Protect(password);
            // 保存文件
            workbook.SaveToFile(filePath);
        }
    }
}

2. 设置工作表保护密码

设置工作表保护密码的示例代码如下:

using Spire.Xls;
using System;

namespace ExcelEncryptDemo
{
    class SpireProtect
    {
        public static void SetSheetProtectPassword(string filePath, string password)
        {
            Workbook workbook = new Workbook();
            Worksheet sheet = workbook.Worksheets[0];
            sheet.Name = "保护页";
            sheet.Range["A1"].Text = "受保护的内容";

            // 设置工作表保护密码,可指定保护选项
            sheet.Protect(password, SheetProtectionType.All);
            // 保存文件
            workbook.SaveToFile(filePath);
        }
    }
}

两种方案对比

两种方案的特点对比如下:

对比项NPOISpire.XLS
授权费用免费开源商业使用需付费
功能丰富度基础功能完善支持更多高级功能
代码复杂度稍复杂,需处理更多底层细节简洁,封装度高
适用场景预算有限、基础Excel操作需求复杂Excel处理需求、商业项目

注意事项

  • 设置打开密码后,用户打开文件时需要输入正确密码才能查看内容,密码丢失无法找回,需妥善保管。
  • 工作表保护密码仅限制编辑操作,不会阻止用户打开文件,可根据需求选择两种密码的组合使用。
  • NPOI设置xls格式文件的打开密码逻辑与xlsx不同,若需要处理旧格式文件,需参考对应版本的官方文档。

C#Excel加密电子表格保护文件密码设置修改时间:2026-06-10 11:30:27

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。