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种不同的保护类型,如下表所示:
C#如何设置Excel文档保护——工作簿、工作表、单元格

代码示例

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中查看),点击打开该工作簿,如下图所示,密码设置完成。输入密码即可查看该文档。
C#如何设置Excel文档保护——工作簿、工作表、单元格

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");
        }
    }
}

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

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

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");
        }
    }
}

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

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

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
C#如何设置Excel文档保护——工作簿、工作表、单元格

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

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

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

转载于:https://blog.51cto.com/eiceblue/2128543

  • 0
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

range.NumberFormatLocal = "@"; //设置单元格格式为文本 range = (Range)worksheet.get_Range("A1", "E1"); //获取Excel多个单元格区域:本例做为Excel头 range.Merge(0); //单元格合并动作 worksheet.Cells[1, 1] = "Excel单元格赋值"; //Excel单元格赋值 range.Font.Size = 15; //设置字体大小 range.Font.Underline=true; //设置字体是否有下划线 range.Font.Name="黑体"; 设置字体的种类 range.HorizontalAlignment=XlHAlign.xlHAlignCenter; //设置字体在单元格内的对其方式 range.ColumnWidth=15; //设置单元格的宽度 range.Cells.Interior.Color=System.Drawing.Color.FromArgb(255,204,153).ToArgb(); //设置单元格的背景色 range.Borders.LineStyle=1; //设置单元格边框的粗细 range.BorderAround(XlLineStyle.xlContinuous,XlBorderWeight.xlThick,XlColorIndex.xlColorIndexAutomatic,System.Drawing.Color.Black.ToArgb()); //给单元格加边框 range.Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeTop).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlLineStyleNone; //设置单元格上边框为无边框 range.EntireColumn.AutoFit(); //自动调整列宽 Range.HorizontalAlignment= xlCenter; // 文本水平居中方式 Range.VerticalAlignment= xlCenter //文本垂直居中方式 Range.WrapText=true; //文本自动换行 Range.Interior.ColorIndex=39; //填充颜色为淡紫色 Range.Font.Color=clBlue; //字体颜色 xlsApp.DisplayAlerts=false; //保存Excel的时候,不弹出是否保存的窗口直接进行保存 ==================================================================== using System; using System.Collections.Generic; using System.Text; using System.Reflection; using System.Runtime.InteropServices; using Microsoft.Office.Interop.Excel; using ExcelApplication = Microsoft.Office.Interop.Excel.ApplicationClass; using System.IO; namespace ExcalDemo { public class ExcelFiles { public void CreateExcelFiles() { ExcelApplication excel = new ExcelApplication(); try { excel.Visible = false;// 不显示 Excel 文件,如果为 true 则显示 Excel 文件 excel.Workbooks.Add(Missing.Value);// 添加工作簿 Worksheet sheet = (Worksheet)excel.ActiveSheet;// 获取当前工作 Range ran
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值