1. 程式人生 > >C#如何設置Excel文檔保護——工作簿、工作表、單元格

C#如何設置Excel文檔保護——工作簿、工作表、單元格

C# .NET excel 加密 解密

簡介

Excel在工作和學習中應用廣泛,是必不可少的數據統計與處理工具。對於一些重要的Excel文件,只供特殊人員查看、編輯或者防止重要數據對外泄露時,就需要設置文檔保護,包括設置訪問密碼、設置文件只讀等操作。本篇文章將介紹如何使用C#來設置Excel工作簿和工作表的保護,示例內容涉及以下要點

  1. 加密Excel工作簿
  2. 解密Excel工作簿
  3. 加密Excel工作表
    3.1加密整個工作表
    3.2 鎖定單元格區域
  4. 解密工作表
  5. 隱藏單元格公式

工具使用

  • Spire. XLS for .NET 8.0
    PS: 安裝後,添加引用Spire.Xls.dll到項目中並添加相應的命名空間即可,dll文件可在安裝路徑下的Bin文件夾中獲取。

註:由於工作中我們會遇到各種各樣的需求,加密Excel表格時也可以分不同方法來實現加密需求,Spire.XLS可提供18種不同的保護類型,如下表所示:
技術分享圖片

代碼示例

1.加密Excel工作簿

【C#】

using Spire.Xls;

namespace ProtectWorkbook_XLS
{
    class Program
    {
        static void Main(string[] args)
        {
            //初始化一個工作簿並加載一個工作簿實例
            Workbook book = new Workbook();
            book.LoadFromFile("test.xls");

            //為工作簿設置訪問密碼
            book.Protect("myworkbook");

            //保存並打開文檔
            book.SaveToFile("ProtectedWorkbook.xlsx", ExcelVersion.Version2010);
            System.Diagnostics.Process.Start("ProtectedWorkbook.xlsx");
        }
    }
}

運行該項目,生成文件(可在該項目文件夾bin>Debug中查看),點擊打開該工作簿,如下圖所示,密碼設置完成。輸入密碼即可查看該文檔。
技術分享圖片

2.解密Excel工作簿

【C#】

using Spire.Xls;

namespace UnProtestedWordbook_XLS
{
    class Program
    {
        static void Main(string[] args)
        {
            //初始化一個Workbook實例
            Workbook workbook = new Workbook();

            //輸入密碼並加載文檔
            workbook.OpenPassword = ("123");
            workbook.LoadFromFile("test.xlsx", ExcelVersion.Version2013);

            //取消保護
            workbook.UnProtect();

            //保存並打開文檔
            workbook.SaveToFile("Output.xlsx", ExcelVersion.Version2013);
            System.Diagnostics.Process.Start("Output.xlsx");
        }
    }
}

運行程序後就沒有密碼保護了。

3. 加密Excel工作表

3.1 加密整個工作表(設置為只讀)

【C#】

using Spire.Xls;

namespace ProtectWorksheet_XLS
{
    class Program
    {
        static void Main(string[] args)
        {
            //初始化一個工作簿並加載一個工作簿實例
            Workbook book = new Workbook();
            book.LoadFromFile("test.xlsx");

            //指定需要加密的工作表
            Worksheet sheet = book.Worksheets[0];

            //為工作表設置啟用編輯的密碼
            sheet.Protect("myworksheet", SheetProtectionType.None);

            //保存並打開文件
            book.SaveToFile("ProtectedWorksheet.xlsx", ExcelVersion.Version2010);
            System.Diagnostics.Process.Start("ProtectedWorksheet.xlsx");
        }
    }
}

技術分享圖片

此時,需要編輯工作表時需要密碼,正確輸入密碼後即可編輯。

3.2 指定可編輯單元格區域

【C#】

using Spire.Xls;

namespace UnlockCell_XLS
{
    class Program
    {
        static void Main(string[] args)
        {
            //初始化一個工作簿並加載一個實例
            Workbook book = new Workbook();
            book.LoadFromFile("test.xlsx");

            //獲取工作簿中第一個工作表
            Worksheet sheet = book.Worksheets[0];

            //設置工作表保護密碼,並指定不受密碼保護(即允許用戶編輯)的單元格區域    
            sheet.AddAllowEditRange("AAA", sheet.Range["B2:E6"], ""); 
            sheet.Protect("AAA", SheetProtectionType.All); 

            //保存並打開文件
            book.SaveToFile("UnlockCell.xlsx", ExcelVersion.Version2010);
            System.Diagnostics.Process.Start("UnlockCell.xlsx");
        }
    }
}

效果圖:
技術分享圖片

此時,在指定區域的單元格可以任意編輯。對於指定區域外的單元格需要編輯時,須輸入密碼。

4. 解密工作表

【C#】

using Spire.Xls;

namespace ProtectWorksheet_XLS
{
    class Program
    {
        static void Main(string[] args)
        {
            //初始化一個工作簿並加載一個工作簿實例
            Workbook book = new Workbook();
            book.LoadFromFile("ProtectedWorksheet.xlsx");

            //獲取工作簿中第一個工作表
            Worksheet sheet = book.Worksheets[0];

            //設置撤銷保護的密碼 
            sheet.Unprotect("myworksheet");

            //保存並打開文件
            book.SaveToFile("UnProtectedWorksheet.xlsx", ExcelVersion.Version2010); 
            System.Diagnostics.Process.Start("UnProtectedWorksheet.xlsx"); 
        }
    }
}

運行程序後工作表不再有密碼保護。

5. 隱藏公式

【C#】

using Spire.Xls;

namespace ProtectWorksheet_XLS
{
    class Program
    {
        static void Main(string[] args)
        {
            //初始化一個工作簿並加載一個工作簿實例
            Workbook book = new Workbook();
            book.LoadFromFile("test.xlsx");

            //獲取工作簿中第一個工作表
            Worksheet sheet = book.Worksheets[0];

            //設置公式隱藏 ,並設置保護密碼 
            sheet.AllocatedRange.IsFormulaHidden = true;
            sheet.Protect("123");

            //保存並打開文件
            book.SaveToFile("HideFormular.xlsx", ExcelVersion.Version2010);
            System.Diagnostics.Process.Start("HideFormular.xlsx"); 
        }
    }
}

效果對比:
Before
技術分享圖片

After
技術分享圖片

選中單元格時,將不再顯示單元格公式。

以上全部為本次關於設置Excel文檔保護的內容,對於不同的需求,可以自行選擇保護方式,感興趣的話也可以嘗試表格中列舉的其他類型的保護方式。
本文完!
(如需轉載,請註明出處)

C#如何設置Excel文檔保護——工作簿、工作表、單元格