`

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文档保护的内容,对于不同的需求,可以自行选择保护方式,感兴趣的话也可以尝试表格中列举的其他类型的保护方式。

本文完!

 

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

 

  • 大小: 44.5 KB
  • 大小: 19.9 KB
  • 大小: 67 KB
  • 大小: 33.2 KB
  • 大小: 29.7 KB
  • 大小: 30.7 KB
0
0
分享到:
评论

相关推荐

    c# 操作Excel单元格属性

    // 获取当前工作表 Range range = null;// 创建一个空的单元格对象 range = sheet.get_Range("A1", Missing.Value);// 获取单个单元格 range.RowHeight = 20; // 设置行高 range.ColumnWidth = 20; // 设置...

    C# 将Excel表格转成图片并保存源码

    C# 将Excel表格转成图片并保存源码,本人已成功测试,可以成功转换并保存,代码简明!

    NPOI导出数据,操作excel(添加,修改)

    适用情况,复杂的列名,比如列名有背景色,合并单元格,字体加粗等等多的个性化...NPOI它会把excel工作簿(workbook)里的sheet(工作表)的数据全部读取下来,所有的信息包括背景色,合并单元格等 具体实现方法看源码!

    免费版.NET Excel组件_Free Spire.XLS for .NET 8.3

    这个专业的 .NET Excel 类库嵌入了很多灵活显示工作表的选项,包括分页符,缩放设置,冻结窗口,页眉/页脚,打印 Excel 文件,打印页面尺寸和打印区域等。 5.在运行时轻松操作单元格和 Excel 计算引擎。开发人员可以...

    C#的Excel导入、导出

    工作簿(Workbook):每个Excel文件可理解为一个工作簿。 工作表(Sheet):一个工作簿(Workbook)可以包含多个工作表。 行(row):一个工作表(Sheet)可以包含多个行。 二. Excel导入 2.1 操作流程 2.2 NPOI操作代码

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和集合的使用、面向对象编程...文件、C#与Word互操作、高效应用Excel、基本图形绘制、图像处理技术、常用图表应用、动画处理技术、音频与视频控制...

    RepoStruct-Excel-Addin:Excel 加载项有助于在文件服务器上实施通用目录结构

    此插件允许验证文件系统中的存储库是否符合 XML 定义。 Excel 文件包含我们要在工作表中管理的存储库列表。... 如果您的工作簿中有一个包含“C# 课程”的单元格,请选择它并单击“检查存储库”,如果

    JazzFramework:免费的C#和JavaScript工具<3

    工作簿,工作表,单元格控件。 爵士助手 用于从DataTable到任何类型的List的转换 爵士桌 已经具有现代数据表中所有熟悉的功能。 实时完全可编辑。 API,JSON支持。 语言可以轻松更改 自动排序和自动分页 爵士...

    十天学会ASP.net--我认为ASP.NET比ASP难很多,希望大家做好准备

    在这里我要说明两点:1、我的示例文件总是有A和B分别是用C#和VB写的,演示的图片就用C#那一种的,都一样嘛,教程里面代码也是写两种用分割开,大家可以比较一下。2、我写教程的时候用的都是记事本来编写APS.NET大家...

Global site tag (gtag.js) - Google Analytics