C# 如何加密、解密Excel工作表
1、安装该类库后,注意在程序中添加引用Spire.XLS.dll(dll文件可在安装路径下的Bin文件夹中获取)

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");
}
}
}
调试程序,生成文档。打开文档后,编辑工作表需要密码,正确输入密码后即可编辑。

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");
}
}
}
生成的文档中,在指定区域的单元格可以任意编辑。对于指定区域外的单元格需要编辑时,须输入密码。

3、隐藏单元格公式
【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");
}
}
}
公式隐藏后的前后效果对比


1、【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");
}
}
}
运行程序后工作表不再有密码保护。