C#如何设置Excel文档保护——工作簿、工作表、单元格

0阅读 0评论2018-06-22 Mia张
分类:C#/.net

简介

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种不同的保护类型,如下表所示:

Types

Description

None

Represents none flags.

Object

Protects shapes.

Scenarios

Protects scenarios.

Formattingcells

Allows users to format any cells on a protected worksheet.

Formattingcolumns

Allows users to format any columns on a protected worksheet.

Formattingrows

Allows users to format any rows on a protected worksheet.

Insertingcolumns

Allows users to insert columns on a protected worksheet.

Insertingrows

Allows users to insert rows on a protected worksheet.

Insertinghyperlinks

Allows users to insert hyperlinks on a protected worksheet.

Deletingcolumns

Allows users to delete columns on a protected worksheet.

Deletingrows

Allows users to delete rows on a protected worksheet.

Lockedcells

Protects locked cells.

Sorting

Allows users to sort on a protected worksheet.

Filtering

Allows users to set filters on a protected worksheet.

Usingpivottable

Allows users to use pivot table reports on a protected worksheet.

Unlockedcells

Protects users interface, but not macros.

Contents

Represents all flags.

All

Represents default protection.


代码示例

1.加密Excel工作簿

【C#】

  1. using Spire.Xls;

  2. namespace ProtectWorkbook_XLS
  3. {
  4.     class Program
  5.     {
  6.         static void Main(string[] args)
  7.         {
  8.             //初始化一个工作簿并加载一个工作簿实例
  9.             Workbook book = new Workbook();
  10.             book.LoadFromFile("test.xls");

  11.             //为工作簿设置访问密码
  12.             book.Protect("myworkbook");

  13.             //保存并打开文档
  14.             book.SaveToFile("ProtectedWorkbook.xlsx", ExcelVersion.Version2010);
  15.             System.Diagnostics.Process.Start("ProtectedWorkbook.xlsx");
  16.         }
  17.     }
  18. }

运行该项目,生成文件(可在该项目文件夹bin>Debug中查看),点击打开该工作簿,如下图所示,密码设置完成。输入密码即可查看该文档。


2.解密Excel工作簿

【C#】


  1. using Spire.Xls;

  2. namespace UnProtestedWordbook_XLS
  3. {
  4.     class Program
  5.     {
  6.         static void Main(string[] args)
  7.         {
  8.             //初始化一个Workbook实例
  9.             Workbook workbook = new Workbook();

  10.             //输入密码并加载文档
  11.             workbook.OpenPassword = ("123");
  12.             workbook.LoadFromFile("test.xlsx", ExcelVersion.Version2013);

  13.             //取消保护
  14.             workbook.UnProtect();

  15.             //保存并打开文档
  16.             workbook.SaveToFile("Output.xlsx", ExcelVersion.Version2013);
  17.             System.Diagnostics.Process.Start("Output.xlsx");
  18.         }
  19.     }
  20. }

运行程序后就没有密码保护了。

3. 加密Excel工作表

3.1 加密整个工作表(设置为只读)

【C#】

  1. using Spire.Xls;

  2. namespace ProtectWorksheet_XLS
  3. {
  4.     class Program
  5.     {
  6.         static void Main(string[] args)
  7.         {
  8.             //初始化一个工作簿并加载一个工作簿实例
  9.             Workbook book = new Workbook();
  10.             book.LoadFromFile("test.xlsx");

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

  13.             //为工作表设置启用编辑的密码
  14.             sheet.Protect("myworksheet", SheetProtectionType.None);

  15.             //保存并打开文件
  16.             book.SaveToFile("ProtectedWorksheet.xlsx", ExcelVersion.Version2010);
  17.             System.Diagnostics.Process.Start("ProtectedWorksheet.xlsx");
  18.         }
  19.     }
  20. }


此时,需要编辑工作表时需要密码,正确输入密码后即可编辑。

3.2 指定可编辑单元格区域

【C#】


  1. using Spire.Xls;

  2. namespace UnlockCell_XLS
  3. {
  4.     class Program
  5.     {
  6.         static void Main(string[] args)
  7.         {
  8.             //初始化一个工作簿并加载一个实例
  9.             Workbook book = new Workbook();
  10.             book.LoadFromFile("test.xlsx");

  11.             //获取工作簿中第一个工作表
  12.             Worksheet sheet = book.Worksheets[0];

  13.             //设置工作表保护密码,并指定不受密码保护(即允许用户编辑)的单元格区域
  14.             sheet.AddAllowEditRange("AAA", sheet.Range["B2:E6"], "");
  15.             sheet.Protect("AAA", SheetProtectionType.All);

  16.             //保存并打开文件
  17.             book.SaveToFile("UnlockCell.xlsx", ExcelVersion.Version2010);
  18.             System.Diagnostics.Process.Start("UnlockCell.xlsx");
  19.         }
  20.     }
  21. }


此时,在指定区域的单元格可以任意编辑。对于指定区域外的单元格需要编辑时,须输入密码。


4. 解密工作表

【C#】


  1. using Spire.Xls;

  2. namespace ProtectWorksheet_XLS
  3. {
  4.     class Program
  5.     {
  6.         static void Main(string[] args)
  7.         {
  8.             //初始化一个工作簿并加载一个工作簿实例
  9.             Workbook book = new Workbook();
  10.             book.LoadFromFile("ProtectedWorksheet.xlsx");

  11.             //获取工作簿中第一个工作表
  12.             Worksheet sheet = book.Worksheets[0];

  13.             //设置撤销保护的密码
  14.             sheet.Unprotect("myworksheet");

  15.             //保存并打开文件
  16.             book.SaveToFile("UnProtectedWorksheet.xlsx", ExcelVersion.Version2010);
  17.             System.Diagnostics.Process.Start("UnProtectedWorksheet.xlsx");
  18.         }
  19.     }
  20. }

运行程序后工作表不再有密码保护。

5. 隐藏公式

【C#】


  1. using Spire.Xls;

  2. namespace ProtectWorksheet_XLS
  3. {
  4.     class Program
  5.     {
  6.         static void Main(string[] args)
  7.         {
  8.             //初始化一个工作簿并加载一个工作簿实例
  9.             Workbook book = new Workbook();
  10.             book.LoadFromFile("test.xlsx");

  11.             //获取工作簿中第一个工作表
  12.             Worksheet sheet = book.Worksheets[0];

  13.             //设置公式隐藏 ,并设置保护密码
  14.             sheet.AllocatedRange.IsFormulaHidden = true;
  15.             sheet.Protect("123");

  16.             //保存并打开文件
  17.             book.SaveToFile("HideFormular.xlsx", ExcelVersion.Version2010);
  18.             System.Diagnostics.Process.Start("HideFormular.xlsx");
  19.         }
  20.     }
  21. }

效果对比:

Before





选中单元格时,将不再显示单元格公式。

 

以上全部为本次关于设置Excel文档保护的内容,对于不同的需求,可以自行选择保护方式,感兴趣的话也可以尝试表格中列举的其他类型的保护方式。

本文完!

(如需转载,请注明出处)

上一篇:C# 插入Excel页眉页脚
下一篇:C# /VB.NET 插入、修改、删除Word批注