Excel サービスの UDF についてよく寄せられる質問
最終更新日: 2010年1月21日
適用対象: SharePoint Server 2010
この記事の内容
マネージ コード UDF を作成する
データ型
XLL
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;
}
}
}
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.Office.Excel.Server.Udf
Imports 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
Private calc As New Calculator()
<UdfMethod> _
Public Function MyFunction() As Integer
Dim i As Integer
i = (i + 88) * 2
Return i
End Function
<UdfMethod(IsVolatile := True)> _
Public Function MyDouble(ByVal d As Double) As Double
Return d * 9
End Function
<UdfMethod> _
Public Function AddMe(ByVal a As Integer, ByVal b As Integer) As Integer
Dim c As Integer
' Call the Web service Add method
c = calc.Add(a, b)
Return c
End Function
End Class
End Namespace
データ型
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 をマネージ コード ラッパーのアセンブリと共にサーバーに展開することができます。