http://www.docin.com/p-378093577.html
在金融系统的应用系统中经常需要与Excel交换数据或利用Excel制作报表,但在某些情况下,我们的业务系统要求生成的临时或最终的Excel表不被别人打开,而工作表的部分或者全部单元格也不允许被别人修改,这时我们要用到Excel文档的加密和工作表保护功能。 请看下面实例如何在Delphi中加密和保护Excel表。
有关加密和保护Excel表主要用到下面四个方法:
1.以加密方式保存Excel文档的方法
ExcelApp.ActiveWorkbook.SavaAs(Filename:='c:\test.xls',Password:='test1',WriteResPassword:='test2');
Filename 表示要保存的文件名,可包含完整路径。如果不指定路径,Microsoft Excel 将把文件保存到当前文件夹中。
Password 指定文件的保护密码,区分大小写(最长不超过15字符)。
WriteResPassword 表示文件的写保护密码。如果文件保存时带有密码,但打开文件时不输入密码,则该文件以只读模式打开。
2.打开加密的Excel文档的方法
ExcelApp.Workbooks.Open(Filename :='c:\test.xls',Password:='test1',WriteResPassword:='test2');
Filename表示要打开的工作簿文件名
Password表示要打开的Excel文件的密码,区分大小写。如果省略该参数并且该Excel已设置密码,则提示用户输入密码。诺不输入密码,则该文件不能打开。
WriteResPassword表示要打开的Excel文件的写入权限密码。如果省略该参数并且该Excel文件已设置密码,则提示用户输入密码,则该文件以只读模式打开。
3.设定受保护或可修改的单元格的方法
ExcelApp.Range['B4','B6'].Locked:=True;
ExcelApp.Range['B4','B6'].FormulaHidden:=True;
这两个属性表示Excel表的单元格是否可修改、是否隐藏公式,当然,要起作用必须还要设定保护工作表。
4.设定保护工作表
ExcelApp.ActiveSheet.Protect(Password:='Test', DrawingObjects:=True,Contents:=True,Scenarios:=True);
Password表示加在工作表或工作簿上区分大小写的密码字符串。如果省略本参数,不用密码就可以取消对改工作表或工作簿的保护,否则,取消对改工作表或工作簿的保护时必须提供该密码。
DrawingObjects指定是否保护形状
Contents指定是否保护的内容
Scenarios指定是否保护方案。
实际上开发工具操作Excel表主要用到微软的Office系列软件提供的VBA。对Excel的操作方法、参数项,都可以用Excel中录制宏的功能获得,其中参数的取值可在逐步运行宏的功能获得,其中参数的取值可在逐步运行宏语句时调试获得。我们利用VBA的帮助和录制的功能可获得更多的Delphi操作Excel的方法,只是写到Delphi中稍微有些不同。
以下为在Delphi中加密和保护Excel表的主要源代码,这已在Delphi7中调试通过。其中源代码和注释语句是对Delphi与Excel交换数据或控制Delphi的方法做了一个小小的总结。注意要在use语句中使用Comobj。

示例源代码:
// 测试 锁定
//eWB.Cells.Select;
//eWB.Selection.Locked := True;
eWB.ActiveSheet.Protect('yjs',True,True,True

Tools.pas 修改代码:
eWB.ActiveSheet.Protect('123',True,True,True);
eWB.SaveAs(FileName);
//eWB.SaveAs(FileName,Password:='123',WriteResPassword:='1234');

Delphi对Excel保护操作的更多相关文章

  1. delphi下excel的操作

    1.首先引用comobj.varints单元 2.声明xlApp,xlBook, xlSheet,picture: Variant; 3.基本操作 xlApp:=CreateOleObject('Ex ...

  2. Delphi的注册表操作

    转帖:Delphi的注册表操作 2009-12-21 11:12:52 分类: Delphi的注册表操作 32位Delphi程序中可利用TRegistry对象来存取注册表文件中的信息.     一.创 ...

  3. VS2010 MFC对Excel的操作

    这是帮别人做项目遇到的一个问题,的那个是纠结了老长时间,本以为是一件很轻松的事... 首先,这里采用了OLE来对Excel进行操作,网上其实有大把的例子,虽然都可以运行,但是并不能满足项目要求,其实我 ...

  4. NPOI对Excel的操作(Sheet转DataTable、List<T>)

    通过NPOI对Excel进行操作,这里主要是读取的操作.封装到ExcelHelper操作类中. 1 using System.Collections.Generic; 2 using NPOI.HSS ...

  5. php的Excel相关操作

    1.需求 把数据库的数据输出excel格式 2.解决方案 利用phpexcel中的examples的01和07,对excel文件的读写 3.操作流程 a.https://github.com/PHPO ...

  6. java导入导出excel常用操作小结及简单示例

    POI中常用设置EXCEL的操作小结: 操作excel如下 HSSFWorkbook wb = new HSSFWorkbook();  //创建一个webbook,对应一个Excel文件 HSSFS ...

  7. Delphi中文本文件的操作

    Delphi中文本文件的操作 相关知识内容: 在对文本文件进行任何处理之前,首先要打开此文本文件.声明变量:通过此变量可以来引用一个文本文件. 打开一个文件需要两步:首先是 AssignFile(), ...

  8. C# 几十万级数据导出Excel,及Excel各种操作

    先上导出代码 /// <summary> /// 导出速度最快 /// </summary> /// <param name="list">&l ...

  9. 对Aspose.Cells Excel文件操作的扩展

    工作中对Excel操作的需求很是常见,今天其他项目组的同事在进行Excel数据导入时,使用Aspose.Cells Excel 遇到了些问题. 刚好闲来不忙,回想自己用过的Excel文件操作,有NPO ...

随机推荐

  1. SSRS 报表开发过程中,除数为0的处理

    这里仅供记录,方法并非原创 在SSRS报表开发过程中,我们经常会遇到除数为0的计算 一般来说,我们都是通过IIF来进行处理,比如: =IIF(B=0,0,A/B) 但实际效果,则是,如果B=0的时候, ...

  2. 【LeetCode】650. 只有两个键的键盘

    只有两个键的键盘 最初在一个记事本上只有一个字符 'A'.你每次可以对这个记事本进行两种操作: 1.Copy All (复制全部) : 你可以复制这个记事本中的所有字符(部分的复制是不允许的). 2. ...

  3. MongoDB 最近遇到的几个小问题

    (1)连接数据库时报错 ERROR Topshelf.Hosts.ConsoleRunHost.Run An exception occurred System.TimeoutException: A ...

  4. Mysql添加用户与授权

    1.本地环境 CentOS Linux release 7.5.1804 (Core) mysql Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using ...

  5. [日常] 前端资源测试机上忽略版本号的的nginx配置

    利用nginx的rewrite的指令,可以实现url的重新跳转,rewrtie有四种不同的flag,分别是redirect(临时重定向).permanent(永久重定向).break和last.其中前 ...

  6. Linux同一机器设置多个IP2019-7-6

    1.临时增加 1)先查看目前的网卡信息 [root@study ~]# ifconfigeno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAS ...

  7. 如何在Pycharm中添加新的模块

    在使用Pycharm编写程序时,我们时常需要调用某些模块,但有些模块事先是没有的,我们需要把模块添加上去. 最近在学习爬虫,写了下面几行代码: 结果出现错误 错误ModuleNotFoundError ...

  8. Vue的实例对象(三)

    一.创建一个 Vue 实例 每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的: var vm = new Vue({ // 选项 }) 当创建一个 Vue 实例时,你可以传入 ...

  9. 《HBase在滴滴出行的应用场景和最佳实践》

    HBase在滴滴出行的应用场景和最佳实践   背景 对接业务类型 HBase是建立在Hadoop生态之上的Database,源生对离线任务支持友好,又因为LSM树是一个优秀的高吞吐数据库结构,所以同时 ...

  10. 【ECNU620】数学题(结论题)

    点此看题面 大致题意: 求\((n-1)!\ mod\ n\)的值. 大力猜结论 首先,看到样例,我们可以猜测: 当\(n\)为质数时,答案为\(n-1\). 当\(n\)为合数时,答案为\(0\). ...