`

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单元格

    在C#代码中,首先需要创建一个Excel Application对象,这允许你启动Excel进程并操作工作簿和工作表。 ```csharp using Excel = Microsoft.Office.Interop.Excel; Excel.Application excelApp = new Excel....

    C#导出EXCEL如何设置单元格类型 - _NET技术 - C#

    要导出数据到Excel并设置单元格类型,首先需要创建一个新的Excel工作簿对象,然后在其中添加工作表,接着就可以在工作表中写入数据了。以下是一个简单的示例: ```csharp using Excel = Microsoft.Office.Interop....

    C# 操作excel单元格合并,格式,冻结

    根据提供的文件信息,我们可以归纳出以下...综上所述,C#提供了强大的工具来操作Excel文档,包括创建新文档、打开已有文档、设置行高列宽、冻结窗格、设置边框和字体样式等。这些功能对于自动化处理Excel数据非常有用。

    c# 操作Excel单元格属性

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

    C#导出Excel复杂表头解决方案

    1. **创建工作簿和工作表**:初始化Excel文档,创建新的工作簿和工作表。 2. **设置单元格值**:在指定的行和列位置写入文本、数字或日期等数据。 3. **处理复杂表头**:利用NPOI的API进行单元格合并,创建多级标题...

    C#导出Excel,利用第三方控件,改变导出样式,字体等

    3. 添加工作表:在工作簿中添加工作表,每个工作表对应Excel中的一个Tab页。 4. 写入数据:将你需要导出的数据写入工作表的指定单元格。可以逐个设置单元格的值,也可以一次性写入整行或整列。 5. 设置样式和字体...

    C#导出excel文件

    总结来说,C#导出Excel文件涉及选择合适的库,如EPPlus,创建Excel包,添加工作表,以及将数据写入工作表。这个过程可以适应各种数据源和数据结构,使得C#成为处理Excel文件的强大工具。在实际应用中,可以根据具体...

    C# 导入Excel文件到ListView和导出ListView到Excel文件

    2. **读取Excel文件**: 使用NPOI,你可以创建一个`HSSFWorkbook`对象来代表Excel工作簿,然后使用`HSSFSheet`对象表示单个工作表。遍历工作表的行和列,读取每个单元格的数据,并将它们存储在一个适当的数据结构(如...

    C# 直接读取 excel工作簿数据代码

    通过上述分析,我们可以看到,使用C#读取Excel工作簿数据涉及多个步骤,包括启动Excel应用、打开工作簿、读取数据、构建数据结构以及关闭资源。这一过程虽然相对复杂,但借助Microsoft Office Interop Excel库,...

    C#创建Excel文件并将数据导出到Excel文件

    在链接的博客文章中,作者可能详细讲解了如何使用C#和NPOI库创建Excel文件并导出数据的步骤,包括创建工作簿、工作表,插入数据,设置样式等,并给出了具体代码示例。通过阅读这个博客,你可以获取到更具体的操作...

    C#生成Excel(包含下拉、列宽、单元格格式、背景等)

    本教程将深入探讨如何使用C#创建Excel文件,包括设置下拉列表、调整列宽、设置单元格格式以及填充背景色。首先,我们需要了解几个关键库,如EPPlus、NPOI或ClosedXML,它们简化了与Excel文件交互的过程。 EPPlus是...

    Npoi操作Excel设置单元格格式

    Npoi是一个强大的.NET库,主要用于读取和写入Microsoft Office文件,尤其是Excel文档。这个库在处理大量数据或需要自定义格式的Excel报告时尤其有用。在本篇中,我们将深入探讨如何使用Npoi结合CSS样式来设置Excel...

    C#导出Excel源码和c#中openfiledialog的使用

    在类的内部,我们可以使用Excel Interop来创建Excel应用程序和工作簿对象,然后使用工作簿对象来创建工作表和查询表。通过查询表,我们可以将数据库中的数据导出到Excel文件中。 在导出Excel文件时,我们可以使用...

    c#获取excel中鼠标所选区域的内容

    接下来,我们需要打开 Excel 应用程序,以便我们可以获取当前活动的工作簿和工作表。我们可以使用以下代码来实现这一点: ``` Excel.Application app = (Excel.Application)System.Runtime.InteropServices.Marshal....

    用C#对Excel文档进行创建,读取,写入

    创建Excel工作簿的过程涉及到创建Excel应用程序实例,然后创建一个新的工作簿。以下是一个简单的示例: ```csharp using Microsoft.Office.Interop.Excel; // 初始化Excel应用程序 Application excel = new ...

    c# 实现excel内显示你所选择的图片

    本教程将指导你如何实现一个功能,即在Excel工作表中显示用户选择的图片。这通常涉及到对Microsoft Office Interop库的使用,如Microsoft.Office.Interop.Excel,它允许C#代码与Excel应用程序进行交互。 首先,你...

    excel控件大全c#嵌入excel

    在C#中嵌入Excel功能,无论是koogra还是myxls,都需要理解Excel文件的基本结构,如工作簿、工作表、行、列等概念。同时,熟悉Excel的公式和函数也是必不可少的,这将帮助你更好地利用这些控件进行数据处理和计算。...

    C#做的 实现往Excel表的指定格里添加图片或者数据

    `ExcelWorkbook`是Excel文件中的工作簿,`ExcelWorksheet`则是工作表。可以通过`ExcelPackage.Workbook`属性创建和访问它们。 ```csharp var worksheet = package.Workbook.Worksheets.Add("Sheet1"); ``` 4. ...

    C#读写Excel文件

    写入Excel文件的流程类似,但需要创建新的工作簿和工作表对象,然后向其中添加行和单元格数据。可以设置单元格的样式,包括字体、颜色、对齐方式等。 4. **示例代码** ```csharp using NPOI.HSSF.UserModel; ...

    c#无需安装office就可原格式读取excel文件

    针对这一问题,`c#无需安装office就可原格式读取excel文件`的方法应运而生,允许开发者在没有Office的情况下,仍能以原始格式处理Excel文档。 这种技术的核心在于使用第三方库或.NET Framework自带的组件。其中一个...

Global site tag (gtag.js) - Google Analytics