C#如何設置Excel文檔保護——工作簿、工作表、單元格
阿新 • • 發佈:2018-06-12
C# .NET excel 加密 解密 簡介
Excel在工作和學習中應用廣泛,是必不可少的數據統計與處理工具。對於一些重要的Excel文件,只供特殊人員查看、編輯或者防止重要數據對外泄露時,就需要設置文檔保護,包括設置訪問密碼、設置文件只讀等操作。本篇文章將介紹如何使用C#來設置Excel工作簿和工作表的保護,示例內容涉及以下要點
- 加密Excel工作簿
- 解密Excel工作簿
- 加密Excel工作表
3.1加密整個工作表
3.2 鎖定單元格區域 - 解密工作表
- 隱藏單元格公式
工具使用
- 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文檔保護——工作簿、工作表、單元格