了解 Excel Services UDF

用户定义函数 (UDF) 是扩展 Excel 的计算和数据导入功能的自定义函数。开发人员通过创建自定义计算包来提供:

  • Excel 中未内置的函数。

  • 内置函数的自定义实现。

  • 针对旧的或不受支持的数据源和特定于应用程序的数据流的自定义数据源。

创建工作簿的用户可以像调用内置函数一样,从单元格中通过公式调用 UDF(例如,“= MyUdf(A1*3.42)”)。

Excel Services UDF 使您能够在单元格中使用公式来调用以托管代码编写并部署到 Microsoft Office SharePoint Server 2007 的自定义函数。可以通过创建 UDF 来:

  • 调用自定义数学函数。

  • 将自定义数据源的数据导入工作表中。

  • 通过 UDF 调用 Web 服务。

创建托管代码 UDF

创建 Excel Services 托管代码 UDF 的一种简便方法是使用 Microsoft Visual Studio 2005 类库模板。在托管代码 UDF 项目中,需要引用名为 Microsoft.Office.Excel.Server.Udf.dll 的 Excel Services UDF 动态链接库 (DLL)。

Microsoft.Office.Excel.Server.Udf.dll 已使用 Microsoft .NET Framework 2.0 编译。如果您使用 Visual Studio 2003 来创建托管代码 UDF,则将无法引用 Microsoft.Office.Excel.Server.Udf.dll。使用旧版本的 .NET Framework 创建的程序集无法引用使用 .NET Framework 2.0 创建的程序集。

必需的属性

若要将某个类中的自定义函数用作 Excel Services UDF 类,必须使用 Microsoft.Office.Excel.Server.Udf.UdfClass 属性标记 UDF 类。在 UDF 程序集中,未使用此属性标记的任何类将被 Excel Calculation Services 忽略。它们不被视为 Excel Services UDF 类。

若要将某个类中的自定义函数用作 Excel Services UDF 方法,必须使用 Microsoft.Office.Excel.Server.Udf.UdfMethod 属性标记 UDF 方法。在 UDF 程序集中,未使用此属性标记的任何方法将被忽略,因为它们不被视为 Excel Services UDF 方法。

Microsoft.Office.Excel.Server.Udf.UdfMethod 属性 (attribute) 具有一个 IsVolatile 属性 (property)。您可以使用 IsVolatile 属性 (property) 来指定某 UDF 方法是可变的还是稳定的。IsVolatile 属性 (property) 采用一个布尔值。默认值为“False”,意味着该特定的 UDF 方法是稳定的。

Microsoft.Office.Excel.Server.Udf.dll 的位置

在已经安装了 Office SharePoint Server 2007 的计算机上,可以在以下路径找到 Microsoft.Office.Excel.Server.Udf.dll 的一个副本:

[drive:]\Program Files\Common Files\Microsoft Shared\web server extensions\12\ISAPI

部署和安全性

部署位置类型

UDF 程序集可以驻留在本地目录、全局程序集缓存或网络共享中。在服务器场的情况下,本地目录路径在服务器场中必须是相同的。

UDF 程序集的标识

可以通过使用 UDF 程序集的完整路径或强名称来公开该程序集的标识,以供 Excel Calculation Services 调用。

例如,可以使用:

  • C:\UDFs\MySampleUdf.dll

  • \\MyNetworkServer\UDFs\MySampleUdf.dll

  • CompanyName.Hierarchichal.MyUdfNamespace.MyUdfClassName.dll, Version=1.1.0.0, Culture=en, PublicKeyToken=e8123117d7ba9ae38

启用 UDF 程序集

默认情况下禁用 UDF 程序集。

共享服务提供程序 (SSP) 中的每个 Excel Services 受信任位置都有一个 AllowUdfs 标志。

备注

AllowUdfs 标志是由“Excel Services 受信任文件位置”页上的“允许的用户定义函数”选项表示的。

默认的 AllowUdfs 值是 false。如果 AllowUdfs 值在特定的受信任位置中设置为 false,则不允许该受信任位置中的工作簿调用 UDF。

为了允许从特定的受信任位置中调用 UDF,请将 AllowUdfs 值设置为 true。

对于在此受信任位置中有 UDF 调用的工作簿,如果 AllowUdfs 值为 false,同时在此工作簿上开始一个会话,则 UDF 调用将会失败。如果在会话开始后将 AllowUdfs 值改为 true,则 UDF 调用也将失败。这是因为,在 AllowUdfs 标志中所做的更改要等到下一个会话才生效(在更新配置数据库之后生效)。

允许 UDF 程序集运行

如果管理员想允许 UDF 程序集运行,他们必须注册所有 UDF 程序集,并通过在受信任位置中将 AllowUdfs 标志设置为 true 来允许工作簿调用 UDF。

重新加载 UDF 程序集

若要重新加载 UDF 程序集,可以运行 iisreset 或重启 Excel Calculation Services 应用程序域。

警告

重置 IIS 将会结束所有当前会话。

有关详细信息,请参阅如何:启用 UDF

有关详细信息,请参阅从内存中卸载应用程序(该链接可能指向英文页面)(https://msdn.microsoft.com/library/default.asp?url=/library/zh-cn/csvr2002/htm/cs_mmc_administering_myhj.asp,)。

UDF 程序集的默认代码访问安全权限

默认情况下,UDF 程序集以完全信任状态运行。

限制 UDF 程序集的代码访问安全权限

如果不希望特定的 UDF 程序集以完全信任状态运行,则必须显式限制该 UDF 程序集的代码访问安全权限。可以通过使用 .NET Framework 2.0 配置工具来配置代码组并限制权限。

开发人员还可以在代码中使用 RequestMinimum 和 RequestOptional 方法,以确保他们的 UDF 程序集仅获得所需的权限。

有关配置代码组以及 RequestMinimum 和 RequestOptional 方法的详细信息,请参阅 MSDN 上的以下文章:

See Also

任务

如何:创建调用 Web 服务的 UDF

如何:信任一个位置

如何:捕获异常

如何:启用 UDF

概念

演练:开发托管代码 UDF

关于 Excel Services UDF 的常见问题解答

Excel Services 体系结构

Excel Services 警报

Excel Services 的已知问题和提示

Excel Services 最佳做法