C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C#控制Excel单元格编辑权限

使用C#控制Excel单元格编辑权限的操作方法

作者:Eiceblue

在团队协作与数据流转日益频繁的今天,保护 Excel 文档中的关键数据免受意外修改或未经授权的编辑,已成为保障数据完整性的基础要求,本文将系统介绍如何使用 Free Spire.XLS for .NET 库,在 C# 中精准锁定 Excel 工作表的特定单元格、行或列

引言

在团队协作与数据流转日益频繁的今天,保护 Excel 文档中的关键数据(如公式、表头、基础参数)免受意外修改或未经授权的编辑,已成为保障数据完整性的基础要求。

本文将系统介绍如何使用 Free Spire.XLS for .NET 库,在 C# 中精准锁定 Excel 工作表的特定单元格、行或列,并提供关于工作表保护与权限设置的详细讲解。

1. 库的选择与安装

1.1 安装免费库

Free Spire.XLS for .NET 是一个完全免费的 Excel 操作组件,无需安装 Microsoft Office 即可创建、读取、修改及保护 Excel 文档。推荐通过 NuGet 包管理器安装:

在 Visual Studio 中打开“程序包管理器控制台”,执行:

Install-Package FreeSpire.XLS

或使用 .NET CLI:

dotnet add package FreeSpire.XLS

1.2 与其他 .NET Excel 库的对比

授权需安装 Excel单元格格式/样式工作表保护 & 密码锁定特定单元格
Free Spire.XLS for .NET完全免费 (查看限制)❌ 无需✅ 全面支持✅ 完整支持✅ 精准锁定
EPPlus (社区版)免费 (非商业),商业需授权❌ 无需✅ 丰富✅ 支持✅ 支持
NPOIApache 2.0 免费❌ 无需✅ 基本支持⚠️ 部分支持⚠️ 复杂
Microsoft.Office.Interop.Excel需 Office 授权必须✅ 完整✅ 支持✅ 支持

各库各有千秋。若追求 精准锁定单元格与完善的保护能力,Free Spire.XLS 提供了直观的 API 且无需安装 Excel。

2. 锁定单元格核心原理

Excel 单元格锁定机制的工作流程可概括为:

关键认知:

下图直观展示了这一逻辑:

3. 基础示例:锁定特定单元格

以下代码演示如何锁定单个单元格和一个区域,并设置密码保护:

using Spire.Xls;

class Program
{
    static void Main(string[] args)
    {
        // 1. 加载工作簿
        Workbook workbook = new Workbook();
        workbook.LoadFromFile("示例.xlsx");

        // 2. 获取第一个工作表
        Worksheet sheet = workbook.Worksheets[0];

        // 3. 解除工作表中所有单元格的锁定
        sheet.Range.Style.Locked = false;

        // 4. 锁定单元格 A2
        sheet.Range["A2"].Style.Locked = true;
        // 锁定区域 C3:E9
        sheet.Range["C3:E9"].Style.Locked = true;

        // 5. 启用工作表保护,设置密码 “123456”
        sheet.Protect("123456", SheetProtectionType.All);

        // 6. 保存文件
        workbook.SaveToFile("锁定单元格.xlsx", ExcelVersion.Version2016);
        workbook.Dispose();
    }
}

执行后,A2 单元格及 C3:E9 范围内的内容将无法编辑,直至解除保护或输入密码。

4. 进阶:锁定整行或整列

业务场景中常需锁定标题行(如第1行)或公式列(如第C列):

using Spire.Xls;

Workbook workbook = new Workbook();
workbook.LoadFromFile("示例.xlsx");
Worksheet sheet = workbook.Worksheets[0];

// 解锁所有单元格
sheet.Range.Style.Locked = false;

// 锁定第 1 行 (行索引从 1 开始)
sheet.Rows[0].Style.Locked = true;
// 锁定第 3 列 (列索引从 0 开始,C 列为第 2 列)
sheet.Columns[2].Style.Locked = true;

sheet.Protect("password", SheetProtectionType.All);
workbook.SaveToFile("锁定行列.xlsx", ExcelVersion.Version2013);
workbook.Dispose();

注意:RowsColumns 集合的索引均为 从 0 开始。因此 Rows[0] 对应 Excel 第 1 行,Columns[2] 对应第 C 列。

5. 高级保护选项

5.1 使用 SheetProtectionType 精细控制权限

SheetProtectionType 枚举决定了用户在受保护工作表中允许执行的操作。可通过按位组合实现灵活授权:

// 允许排序和筛选,但禁止修改内容与结构
sheet.Protect("password", 
    SheetProtectionType.Sorting | SheetProtectionType.Filtering);

常用枚举值含义:

枚举值描述
SheetProtectionType.Content仅保护单元格内容
SheetProtectionType.FormattingCells允许设置单元格格式
SheetProtectionType.FormattingColumns允许设置列格式
SheetProtectionType.FormattingRows允许设置行格式
SheetProtectionType.InsertingRows允许插入行
SheetProtectionType.DeletingRows允许删除行
SheetProtectionType.Sorting允许排序
SheetProtectionType.Filtering允许筛选
SheetProtectionType.UsingPivotTables允许使用数据透 视表
SheetProtectionType.All启用所有保护选项(默认)
SheetProtectionType.None禁止任何操作

5.2 创建允许编辑的区域(AllowEditRange)

即使启用了工作表保护,也可为特定用户预留可编辑区域:

// 添加名为 "InputRange" 的可编辑区域,对应单元格 B1
sheet.AddAllowEditRange("InputRange", sheet.Range["B1"]);

// 之后正常保护工作表
sheet.Protect("password", SheetProtectionType.All);

如此,用户在受保护工作表中仍可编辑 B1 单元格,无需输入密码。

6. 扩展:文件级加密与修改权限

除了工作表保护,Free Spire.XLS for .NET 还支持更高层次的文档安全:

6.1 设置文档打开密码

workbook.Protect("openPassword");

6.2 设置修改权限密码

workbook.SetWriteProtectionPassword("modifyPassword");

6.2 标记为最终版本

通过自定义属性添加标记,提醒用户此文档为最终版:

workbook.CustomDocumentProperties.Add("_MarkAsFinal", true);

通过本文的详细介绍与代码示例,开发者应当能够在 C# 项目中熟练运用 Free Spire.XLS for .NET 实现精细化的 Excel 单元格保护。该库在免费的前提下提供了足够的日常办公自动化能力,是处理 Excel 安全需求的一个可靠选择。

以上就是C#控制Excel单元格编辑权限的操作方法的详细内容,更多关于C#控制Excel单元格编辑权限的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文