Excel サービスの 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
String
Boolean
オブジェクトの配列 : 1 次元配列または 2 次元配列。つまり、object [] および object [,]
DateTime
サポートされている戻り値の型は何ですか?
サポートされている戻り値の型は以下のとおりです。
数値型 : Double、Single、Int32、UInt32、Int16、UInt16、Byte、Sbyte
String
Boolean
オブジェクトの配列 : 1 次元配列または 2 次元配列。つまり、object []、object [,]、int[] および int[,]
DateTime
Object
XLL
XLL はサポートされていますか?
直接はサポートされていません。Excel Services ではマネージ コード UDF のみをロードして呼び出します。ただし、XLL を呼び出すマネージ コード ラッパーを作成し、その XLL をマネージ コード ラッパーのアセンブリと共にサーバーに展開することができます。