次の方法で共有


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 をマネージ コード ラッパーのアセンブリと共にサーバーに展開することができます。

関連項目

タスク

[方法] Web サービスを呼び出す UDF を作成する

[方法] 場所を信頼する

[方法] 例外を検出する

概念

Excel Services UDF とは

[ウォークスルー] マネージ コード UDF を開発する

Excel Services のアーキテクチャ

Excel Services の警告

Excel Services に関する既知の問題とヒント

Excel Services ベスト プラクティス