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

简介

Excel在工作和学习中应用广泛,是必不可少的数据统计与处理工具。对于一些重要的Excel文件,只供特殊人员查看、编辑或者防止重要数据对外泄露时,就需要设置文档保护,包括设置访问密码、设置文件只读等操作。本篇文章将介绍如何使用C#来设置Excel工作簿和工作表的保护,示例内容涉及以下要点

  1. 加密Excel工作簿
  2. 解密Excel工作簿
  3. 加密Excel工作表
    3.1加密整个工作表
    3.2 锁定单元格区域
  4. 解密工作表
  5. 隐藏单元格公式

工具使用

  • 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文档保护的内容,对于不同的需求,可以自行选择保护方式,感兴趣的话也可以尝试表格中列举的其他类型的保护方式。
本文完!
(如需转载,请注明出处)

原文地址:http://blog.51cto.com/eiceblue/2128543

时间: 2024-10-03 17:30:10

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

C# 设置Word文档保护(加密、解密、权限设置)

对于一些重要的word文档,出于防止资料被他人查看,或者防止文档被修改的目的,我们在选择文档保护时可以选择文档打开添加密码或者设置文档操作权限等,在下面的文章中将介绍如何使用类库Free Spire.Doc for .NET来加密.解密以及给文档设置操作权限等,主要分为以下几个要点来具体阐述 添加Word密码保护 解除Word密码保护 设置word文档操作权限 设置Word部分内容编辑权限工具使用: 安装Free Spire.Doc之后,在程序中引用Spire.Doc.dll即可(dll可以在安

C# 对Excel文档打印时的页面设置

1.对打印页面的朝向,页宽,页高进行设置 参考源码[1] using Excel = Microsoft.Office.Interop.Excel; Excel.Application tmpExcel = new Excel.ApplicationClass(); Excel.Workbook tmpbook = tmpExcel.Workbooks.Open(tmppath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Ty

如何破解Excel文档的编辑密码

对于Excel文档我们不仅可以设置打开密码,还可以设置几天几种密码,比如编辑密码.编辑密码又称写保护密码,是一种可以限制编辑权限的密码.如果我们在日常工作中发现自己忘记了excel编辑密码的话,那就需要想办法恢复.今天跟大家主要探讨的就是如何使用office密码破解工具恢复Excel文档的编辑密码.下面就来分享如何破解Excel文档的编辑密码? 设置Excel文档的编辑密码 打开需要设置的编辑密码的Excel文档,依次选择“工具->选项->安全性”或者点击左上角的“WPS表格”选择文件信息-&

EXCEL基础内容学习笔记(二)Excel文档的基本组成与功能介绍

一.基本组成 (一)工作簿.工作表与单元格 (1)工作簿:一个Excel文档即为一个工作簿. (2)工作表:工作簿中的每个表. (3)单元格:打开Excel文档,在工作表中单击,出现的加粗四边形即为单元格.单元格由行和列组成,命名时由行和列说明,称为单元格名称或地址. 一个工作簿中有若干个工作表,每个工作表有许多单元格组成. 二.功能介绍 (1)标题栏:Excel文档最上端. (2)选项卡 (3)工作区:每一个打开的选项卡都含有若干工作区. (4)名称框:所选择的单元格的名字. (5)编辑栏:可

支持将数据导出到Excel文档的时候设置单元格格式的.NET控件Spire.DataExport

Spire.DataExport for .NET是e-iceblue公司推出的一款数据导出类.NET控件.作为一款专业的数据导出控件,Spire.DataExport for .NET可以帮助开发人员轻松快速的从各种主流数据库中导出数据并存储于各种文件格式中.他支持从SQL Command, DataTable,ListView中导出数据并存储于MS Excel,MS Word, HTML, XML, PDF, MS Access, DBF, SQL Script, SYLK, DIF, CS

Excel文档间的数据替换 ---电脑版APP 自动操作魔法师

http://www.won-soft.com/macro/solution/excel-data-replace.htm 介绍: 在我们的日常工作中, 可能经常需要使用同各种数据表格打交道.比如财务工作中各种数据表格, 生产管理上的各种生产数据统计表,以前人力资源部的工资表等等.在处理这些数据的过程中, 我们可能经常会遇到要做一张表,但这张表的数据需要从另一张表上取,每个数据间有一些相关联的规则,举例来说: 年底一般都会做工资统计表,列出所有员工的全年的各种奖金总计.全年应发工资.实发工资.扣

Apache POI -- Java 导出Excel文档(笔记)

一.Action类 import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Met

POI导出EXCEL文档

package com.wiseweb.util.excel; import java.io.*; import java.util.*; import javax.swing.JOptionPane; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.hssf.util.HSSFColor; import com.wiseweb.pom.entity.BaiinfoPriceTime; public class Expo

POI操纵EXCEL文档之导入文档(一)

             当前主流的后台管理系统,相信都会有文档导入导出的功能.而这其中用到的技术又是多种多样,有用POI框架,也有用JXLS技术的.技术只是手段,项目中实现功能最重要.今天主要说下如何利用POI技术操作EXCEL文档. POI 导入EXCEL文档: 1,首先,要导入EXCEL 文档,就必须要先有导入的模板文件,在这里,我提供好了制作好的EXCEL 模板文件提供下载:( EXCEL文档模板示例下载 ) 2,有了EXCEL 模板文件,就开始编写页面,并编写后台逻辑代码了: <%--