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

以下是一些有关 Excel Services 用户定义函数 (UDF) 的常见问题解答。

创建托管代码 UDF

什么是受支持的 UDF 类?

UDF 程序集中的 UDF 类必须是公共的。不能将其密封。它不能是抽象、内部或专用的。必须具有无参数的公共构造函数。对于可自动生成无参数公共构造函数的语言(例如 C#),您可以不使用任何构造函数。

什么是受支持的 UDF 方法?

UDF 程序集中的 UDF 方法必须是公共的。UDF 方法必须是线程安全的。

UDF 方法不能具有:

  • ref 或 out 形参

  • retval 属性

  • Optional 实参

  • 不受支持的数据类型

UDF 方法还必须具有受支持的返回类型。若要获得受支持数据类型的列表,请参阅本主题中的“数据类型”部分。

可以从 UDF 程序集调用 Web 服务吗?

可以。有关示例,请参见以下 UDF 示例代码。另请参阅如何:创建调用 Web 服务的 UDF

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Excel.Server.Udf;
using UdfWS.dk.iter.webservices;

namespace UdfWS
{
    [UdfClass]
    public class MyUdfClass
    {
        // Instantiate the Web service. The Web service used is at   
        // http://webservices.iter.dk/calculator.asmx
        Calculator calc = new Calculator();

        [UdfMethod]
        public int MyFunction()
        {
            int i;
            i = (i + 88) * 2;
            return i;
        }

        [UdfMethod(IsVolatile = true)]
        public double MyDouble(double d)
        {
            return d * 9;
        }

        [UdfMethod]
        public int AddMe(int a, int b)
        {
            int c;
            // Call the Web service Add method
            c = calc.Add(a, b);
            return c;
        }        
    }
}

数据类型

哪些数据类型可以用作 UDF 参数?

所支持的数据类型如下所示:

  • 数值类型:Double、Single、Int32、UInt32、Int16、UInt16、Byte、Sbyte

  • 字符串

  • 布尔值

  • 对象数组:一维或二维数组,即对象 [] 和对象 [,]

  • DateTime

有哪些受支持的返回值类型?

所支持的返回值类型如下所示:

  • 数值类型:Double、Single、Int32、UInt32、Int16、UInt16、Byte、Sbyte

  • 字符串

  • 布尔值

  • 对象数组:一或二维数组,即,对象 []、对象 [,]、int[] 和 int[,])

  • DateTime

  • 对象

XLL

支持 XLL 吗?

不直接支持。Excel Services 只会加载并调用托管代码 UDF。但您可以编写托管代码包装以调用 XLL,并将 XLL 与托管代码包装程序集一起部署到服务器。

See Also

任务

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

如何:信任一个位置

如何:捕获异常

概念

了解 Excel Services UDF

演练:开发托管代码 UDF

Excel Services 体系结构

Excel Services 警报

Excel Services 的已知问题和提示

Excel Services 最佳做法