最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用C#控制Excel單元格編輯權限的操作方法

 更新時間:2026年05月11日 08:40:22   作者:Eiceblue  
在團隊協(xié)作與數(shù)據(jù)流轉日益頻繁的今天,保護?Excel?文檔中的關鍵數(shù)據(jù)免受意外修改或未經(jīng)授權的編輯,已成為保障數(shù)據(jù)完整性的基礎要求,本文將系統(tǒng)介紹如何使用?Free?Spire.XLS?for?.NET?庫,在?C#?中精準鎖定?Excel?工作表的特定單元格、行或列

引言

在團隊協(xié)作與數(shù)據(jù)流轉日益頻繁的今天,保護 Excel 文檔中的關鍵數(shù)據(jù)(如公式、表頭、基礎參數(shù))免受意外修改或未經(jīng)授權的編輯,已成為保障數(shù)據(jù)完整性的基礎要求。

本文將系統(tǒng)介紹如何使用 Free Spire.XLS for .NET 庫,在 C# 中精準鎖定 Excel 工作表的特定單元格、行或列,并提供關于工作表保護與權限設置的詳細講解。

1. 庫的選擇與安裝

1.1 安裝免費庫

Free Spire.XLS for .NET 是一個完全免費的 Excel 操作組件,無需安裝 Microsoft Office 即可創(chuàng)建、讀取、修改及保護 Excel 文檔。推薦通過 NuGet 包管理器安裝:

在 Visual Studio 中打開“程序包管理器控制臺”,執(zhí)行:

Install-Package FreeSpire.XLS

或使用 .NET CLI:

dotnet add package FreeSpire.XLS

1.2 與其他 .NET Excel 庫的對比

授權需安裝 Excel單元格格式/樣式工作表保護 & 密碼鎖定特定單元格
Free Spire.XLS for .NET完全免費 (查看限制)? 無需? 全面支持? 完整支持? 精準鎖定
EPPlus (社區(qū)版)免費 (非商業(yè)),商業(yè)需授權? 無需? 豐富? 支持? 支持
NPOIApache 2.0 免費? 無需? 基本支持?? 部分支持?? 復雜
Microsoft.Office.Interop.Excel需 Office 授權? 必須? 完整? 支持? 支持

各庫各有千秋。若追求 精準鎖定單元格與完善的保護能力,F(xiàn)ree Spire.XLS 提供了直觀的 API 且無需安裝 Excel。

2. 鎖定單元格核心原理

Excel 單元格鎖定機制的工作流程可概括為:

  • 1?? 默認狀態(tài):所有單元格 Style.Locked = true(但保護未激活時無效)
  • 2?? 解除全表鎖定:sheet.Range.Style.Locked = false
  • 3?? 鎖定特定區(qū)域:sheet.Range["A1:C5"].Style.Locked = true
  • 4?? 激活保護:sheet.Protect(password, SheetProtectionType.All)

關鍵認知:

  • Excel 工作表中所有單元格默認 Locked = true,但此屬性僅在工作表保護生效后才實際限制編輯。
  • 因此,正確的鎖定流程是:全表解鎖 → 局部鎖定 → 啟用保護。

下圖直觀展示了這一邏輯:

3. 基礎示例:鎖定特定單元格

以下代碼演示如何鎖定單個單元格和一個區(qū)域,并設置密碼保護:

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;
        // 鎖定區(qū)域 C3:E9
        sheet.Range["C3:E9"].Style.Locked = true;

        // 5. 啟用工作表保護,設置密碼 “123456”
        sheet.Protect("123456", SheetProtectionType.All);

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

執(zhí)行后,A2 單元格及 C3:E9 范圍內(nèi)的內(nèi)容將無法編輯,直至解除保護或輸入密碼。

4. 進階:鎖定整行或整列

業(yè)務場景中常需鎖定標題行(如第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 枚舉決定了用戶在受保護工作表中允許執(zhí)行的操作。可通過按位組合實現(xiàn)靈活授權:

// 允許排序和篩選,但禁止修改內(nèi)容與結構
sheet.Protect("password", 
    SheetProtectionType.Sorting | SheetProtectionType.Filtering);

常用枚舉值含義:

枚舉值描述
SheetProtectionType.Content僅保護單元格內(nèi)容
SheetProtectionType.FormattingCells允許設置單元格格式
SheetProtectionType.FormattingColumns允許設置列格式
SheetProtectionType.FormattingRows允許設置行格式
SheetProtectionType.InsertingRows允許插入行
SheetProtectionType.DeletingRows允許刪除行
SheetProtectionType.Sorting允許排序
SheetProtectionType.Filtering允許篩選
SheetProtectionType.UsingPivotTables允許使用數(shù)據(jù)透 視表
SheetProtectionType.All啟用所有保護選項(默認)
SheetProtectionType.None禁止任何操作

5.2 創(chuàng)建允許編輯的區(qū)域(AllowEditRange)

即使啟用了工作表保護,也可為特定用戶預留可編輯區(qū)域:

// 添加名為 "InputRange" 的可編輯區(qū)域,對應單元格 B1
sheet.AddAllowEditRange("InputRange", sheet.Range["B1"]);

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

如此,用戶在受保護工作表中仍可編輯 B1 單元格,無需輸入密碼。

6. 擴展:文件級加密與修改權限

除了工作表保護,F(xiàn)ree Spire.XLS for .NET 還支持更高層次的文檔安全:

6.1 設置文檔打開密碼

workbook.Protect("openPassword");

6.2 設置修改權限密碼

workbook.SetWriteProtectionPassword("modifyPassword");

6.2 標記為最終版本

通過自定義屬性添加標記,提醒用戶此文檔為最終版:

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

通過本文的詳細介紹與代碼示例,開發(fā)者應當能夠在 C# 項目中熟練運用 Free Spire.XLS for .NET 實現(xiàn)精細化的 Excel 單元格保護。該庫在免費的前提下提供了足夠的日常辦公自動化能力,是處理 Excel 安全需求的一個可靠選擇。

以上就是C#控制Excel單元格編輯權限的操作方法的詳細內(nèi)容,更多關于C#控制Excel單元格編輯權限的資料請關注腳本之家其它相關文章!

相關文章

  • C#小程序15位轉18位身份證號代碼

    C#小程序15位轉18位身份證號代碼

    現(xiàn)在我們使用的都是18位身份證號,而以前都是15位身份證號,而如何將15位身份證號轉18位身份證號轉換為18位身份證號呢?
    2013-02-02
  • C#深度優(yōu)先遍歷實現(xiàn)全排列

    C#深度優(yōu)先遍歷實現(xiàn)全排列

    這篇文章主要介紹了C#深度優(yōu)先遍歷實現(xiàn)全排列,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • WPF開發(fā)之UniformGrid和ItemsControl的應用詳解

    WPF開發(fā)之UniformGrid和ItemsControl的應用詳解

    為了簡化開發(fā),WPF提供了UniformGrid布局和ItemsControl容器,本文以一個簡單的小例子,簡述如何在WPF開發(fā)中應用UniformGrid和ItemsControl實現(xiàn)均勻的布局,希望對大家有所幫助
    2024-01-01
  • c#程序定期把內(nèi)存信息記錄到log日志示例

    c#程序定期把內(nèi)存信息記錄到log日志示例

    這篇文章主要介紹了c#程序定期把內(nèi)存信息記錄到log日志示例,需要的朋友可以參考下
    2014-04-04
  • c# 生成隨機時間的小例子

    c# 生成隨機時間的小例子

    這篇文章介紹了c# 生成隨機時間的小例子,有需要的朋友可以參考一下
    2013-08-08
  • c#中禁用windows的任務管理器的方法

    c#中禁用windows的任務管理器的方法

    這篇文章主要介紹了c#中禁用windows的任務管理器的方法,通過注冊表實現(xiàn)禁用,需要的朋友可以參考下
    2014-06-06
  • C#實現(xiàn)自定義打印文字和圖片的示例代碼

    C#實現(xiàn)自定義打印文字和圖片的示例代碼

    本文主要介紹了C#實現(xiàn)自定義打印文字和圖片的示例代碼,C#中打印其實就是自己繪圖+調(diào)用系統(tǒng)打印函數(shù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • C#中的類繼承詳解

    C#中的類繼承詳解

    大家好,本篇文章主要講的是C#中的類繼承詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • C#實現(xiàn)在窗體上的統(tǒng)計圖效果

    C#實現(xiàn)在窗體上的統(tǒng)計圖效果

    這篇文章主要為大家詳細介紹了C#實現(xiàn)在窗體上的統(tǒng)計圖效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C#執(zhí)行DOS命令的方法

    C#執(zhí)行DOS命令的方法

    這篇文章主要介紹了C#執(zhí)行DOS命令的方法,涉及針對進程的調(diào)用以及系統(tǒng)DOS命令的使用,具有不錯的實用價值,需要的朋友可以參考下
    2014-11-11

最新評論

江川县| 南木林县| 烟台市| 钟山县| 嵊州市| 罗城| 湖口县| 米易县| 阿克苏市| 论坛| 连南| 诸暨市| 年辖:市辖区| 滨海县| 会东县| 海口市| 健康| 河池市| 永平县| 新泰市| 麻阳| 龙井市| 新宾| 竹溪县| 西藏| 剑阁县| 固阳县| 南丹县| 承德县| 抚州市| 来凤县| 巩留县| 囊谦县| 新龙县| 赣州市| 鄢陵县| 宿松县| 翼城县| 晴隆县| 天镇县| 平利县|