簡介
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文檔保護的內容,對於不同的需求,可以自行選擇保護方式,感興趣的話也可以嘗試表格中列舉的其他類型的保護方式。
本文完!
(如需轉載,請註明出處)