- 提供默认的Excel函数库中没有提供的功能
- 可以为一些老的不支持的数据源创建自定义的数据种子,或创建满足特定应用程序需求的数据流
在2007 MS office体系中,我们可以使用 Excel Services来创建基于 .NET框架的UDF,并可以将这些UDF部署到MOSS中。这些UDF可以被部署在Excel Services上的Excel工作簿所调用。创建这些UDF可以来:
- 调用一些自定义的数学函数
- 从一些不受支持的数据源获取数据(比如从老的数据库,MS Access,MS sql server获取数据到工作簿中)
- 调用Web服务
下面是为Excel Services编写托管代码形式的UDF的五大步骤,接下来将会分别对各步进行详细介绍。
- 在Visual Studio 2005中创建一个托管代码的UDF项目。
- 添加到Excel Services UDF组件的引用。
- 创建一个自定义函数。
- 配置Excel Services来允许UDF的使用。
- 创建并发布一个Excel工作簿来调用UDF。
在Visual Studio 2005中创建一个托管代码的UDF项目
我们可以通过套用Visual Studio 2005的类库模板来开始编写一个Excel Services的托管代码型UDF组件。
添加到Excel Services UDF组件的引用
如果Visual Studio 2005运行在MOSS服务器上,可以直接在Visual Studio中添加引用。在添加引用对话框的.NET标签中选择下面的Excel Services UDF Framework component,点确定即可。如果Visual Studio 2005没有运行在MOSS服务器上,我们需要手工从MOSS服务器上拷贝一个Excel Services UDF组件到本地项目文件夹中。该组件文件名是Microsoft.office.Excel.Server.UDF.dll 默认放在MOSS服务器下面的目录中:
C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\ISAPI
拷贝过来后我们就可以在项目中添加该组件的引用了。在添加引用对话框中点浏览,找到那个dll,点确定即可。
注意:Microsoft.office.Excel.Server.UDF.dll只能用于Microsoft .NET Framework 2.0。所以,我们不能使用Visual Studio 2003来创建托管代码的UDF。因为在老版本的.NET框架下创建的组件无法添加引用到基于.NET Framework 2.0创建的组件。
创建自定义函数
接下来我们就可以创建自定义函数并用Excel Services UDF特性标识该函数。我们必须使用Microsoft.office.Excel.Server.UDF.UDFClass特性来标识实现UDF方法的类,并使用Microsoft.Office.Excel.Server.UDF.UDFMethod特性来标识该UDF方法。我们先引用下面的命名空间,以便在接下来的代码中不用敲一长串的命名空间路径:
接下来,用UdfClass特性标记一下该类,用来说明其中包含了UDF的实现。
[UdfClass]public class Class1
在该类中添加如下形式的方法来实现UDF。
[UdfMethod]public double MyDouble(double