Excel Services UDF についてのよく寄せられる質問Frequently Asked Questions About Excel Services UDFs

ここでは、Excel Services のユーザー定義関数 (UDF) に関してよく寄せられる質問をいくつか取り上げます。Here are some frequently asked questions about Excel Services user-defined functions (UDFs).

マネージ コード UDF の作成Creating Managed-Code UDFs

サポートされる UDF のクラスはどのようなものですか?What is a supported UDF class?

UDF アセンブリ内の UDF クラスは public でなければなりません。sealed にすることができます。abstract、internal、private にすることはできません。パラメーターのない public コンストラクターを持っている必要があります。パラメーターのない public コンストラクターを自動的に生成する言語 (たとえば、C#) では、コンストラクターをまったくコーディングしなくても構いません。The UDF class in a UDF assembly must be public. It can be sealed. It cannot be abstract, internal, or private. It must have a parameterless, public constructor. For languages that automatically generate a parameterless, public constructor (for example, C#), you can have no constructor at all.

サポートされる UDF メソッドはどのようなものですか?What is a supported UDF method?

UDF アセンブリ内の UDF メソッドは、public でなければなりません。UDF メソッドは、スレッド セーフでなければなりません。The UDF method in a UDF assembly must be public. The UDF method must be thread-safe.

UDF メソッドは、以下のものを持つことはできません。A UDF method cannot have:

  • ref または out パラメーターref or out parameters

  • retval 属性retval attributes

  • Optional 引数Optional arguments

  • サポートされないデータ型unsupported data types

さらに、UDF メソッドは、サポートされる戻り値の型を持つ必要があります。サポートされるデータ型のリストについては、このトピックの「データ型」セクションを参照してください。The UDF method must also have a supported return type. For a list of supported data types, see the "Data Types" section of this topic.

UDF アセンブリから Web サービスを呼び出すことはできますか?Can I call a Web service from a UDF assembly?

はい、できます。たとえば、次の UDF サンプルコードを参照してください。また、「 方法: Web サービスを呼び出す UDF の作成」も参照してください。Yes. For an example, see the following UDF sample code. Also see How to: Create a UDF That Calls a Web Service.


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

データ型Data Types

UDF パラメーターとして使用できるデータ型はどのようなものですか?What are the data types that can be used as UDF parameters?

サポートされるデータ型は、以下のとおりです。The supported data types are as follows:

  • 数値型: Double、Single、Int32、UInt32、Int16、UInt16、Byte、SbyteNumeric types: Double, Single, Int32, UInt32, Int16, UInt16, Byte, Sbyte

  • StringString

  • BooleanBoolean

  • オブジェクト配列: 1 次元または 2 次元配列、すなわち、object [] および object [,]Object arrays: one- or two- dimensional arrays, that is, object [] and object [,]

  • DateTimeDateTime

サポートされている戻り値の型はどのようなものですか?What are the supported return value types?

サポートされる戻り値の型は、以下のとおりです。The supported return value types are as follows:

  • 数値型: Double、Single、Int32、UInt32、Int16、UInt16、Byte、SbyteNumeric types: Double, Single, Int32, UInt32, Int16, UInt16, Byte, Sbyte

  • StringString

  • BooleanBoolean

  • オブジェクト配列: 1 次元または 2 次元配列、すなわち、object []、object [,]、int[]、および int[,]Object arrays: one- or two-dimensional arrays, that is, object [], object [,], int[] and int[,])

  • DateTimeDateTime

  • ObjectObject

XLLXLLs

XLL はサポートされていますか?Are XLLs supported?

直接的にはサポートされていません。Excel Services は、マネージ コード UDF のみを読み込み、呼び出します。しかし、XLL を呼び出すマネージ コード ラッパーをコーディングし、XLL をマネージ コード ラッパー アセンブリと一緒にサーバーに展開することができます。Not directly. Excel Services will load and call only managed-code UDFs. However, you can write a managed-code wrapper to call the XLLs and deploy the XLLs to the server, together with the managed-code wrapper assembly.

関連項目See also

タスクTasks

方法: Web サービスを呼び出す UDF の作成How to: Create a UDF That Calls a Web Service

方法: 場所を信頼するHow to: Trust a Location

例外をキャッチする方法How to: Catch Exceptions

概念Concepts

Excel Services UDF の理解Understanding Excel Services UDFs

チュートリアル: マネージ コード UDF を開発するWalkthrough: Developing a Managed-Code UDF

Excel Services のアーキテクチャExcel Services Architecture

Excel Services のアラートExcel Services Alerts

Excel Services の既知の問題およびヒントExcel Services Known Issues and Tips

Excel Services のベスト プラクティスExcel Services Best Practices