加密狗管理,采用函数映射,模式把所有表格使用数字证书加密,存储
只有插入加密狗才能读取,才能解析。
决在某些机器的Excel提示找不到mscoree.dll的问题,需创建类UDFBase.cs,详情请下载源码。
创建类Class1.cs继承UDFBase,创建一个FuncTest方法。其中GUID可通过C#代码自动生成,或通过sql server 执行select NEWID()生成。
C# Code | |
1. | [Guid("5CBFBF06-2949-4DC1-8FF6-87B6864E9FCB")] |
2. | [ClassInterface(ClassInterfaceType.AutoDual), ComVisible(true)] |
3. | public class Class1 : UDFBase |
4. | { |
5. | public int FuncTest(int a) |
6. | { |
7. | try |
8. | { |
9. | return a * 10; |
10. | } |
11. | catch (Exception ex) |
12. | { |
13. | return -999; |
14. | } |
15. | } |
16. | } |
Class1.cs中应当引用以下命名空间。
C# Code | |
1. | using System.Runtime.InteropServices; |
2. | using MsExcel = Microsoft.Office.Interop.Excel; |
修改程序集AssemblyInfo.cs中[assembly: ComVisible(false)]为[assembly: ComVisible(true)]。
设置“为COM互操作注册”,然后生成解决方案。如果提示“错误 1 无法注销程序集“ExcelFunction\bin\Debug\ExcelFunction.dll”。调用的目标发生了异常。 ExcelFunction”请以管理员身份打开VS2010。
Excel设置,文件-选项-加载项-转到Excel加载项-自动化
客户端注册方法
以管理员身份打开命令提示符,并到对应版本的.NET框架下(本例基于.NET4.0开发)
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319>
注册dll
RegAsm ExcelFunction.dll /tlb /codebase
回到要以下提示,可忽略警告信息
Microsoft(R) .NET Framework 程序集注册实用工具 4.0.30319.1
版权所有(C) Microsoft Corporation 1998-2004。保留所有权利。
RegAsm : warning RA0000 : 使用 /codebase 注册未签名的程序集可能会导致程序集妨碍可能在同一台计算机上安装的其他应用程序。/codebase 开关旨在仅用于已签名的程序集。
请为您的程序集提供一个强名称并重新注册它。
成功注册了类型
成功注册了导出到“C:\Windows\Microsoft.NET\Framework\v4.0.30319\ExcelFunction.tlb”的程序集和类型库
注销dll
RegAsm ExcelFunction.dll /u