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

簡介

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

1. 加密Excel工作簿

2. 解密Excel工作簿

3. 加密Excel工作表

   3.1加密整個工作表

   3.2 鎖定單元格區域

4. 解密工作表  

5. 隱藏單元格公式

 

工具使用

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文檔保護的內容,對於不同的需求,可以自行選擇保護方式,感興趣的話也可以嘗試表格中列舉的其他類型的保護方式。

本文完!

 

(如需轉載,請註明出處)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章