プロジェクトに Microsoft.Office.Excel.Server.Udf.dll への参照を追加したら、次のステップは、カスタム関数を作成し、それらの関数に Excel Services のユーザー定義関数 (UDF) 属性でマークを付けることです。
UDF クラスは Microsoft.Office.Excel.Server.Udf.UdfClass 属性でマークを付け、UDF メソッドは Microsoft.Office.Excel.Server.Udf.UdfMethod 属性でマークを付ける必要があります。
UDF アセンブリ内で Microsoft.Office.Excel.Server.Udf.UdfMethod 属性によるマークが付いていないメソッドは、UDF メソッドとは見なされないため、無視されます。
Microsoft.Office.Excel.Server.Udf.UdfMethod 属性には、 IsVolatile プロパティがあります。 IsVolatile プロパティを使用して、UDF メソッドが自動再計算か非自動再計算かを指定します。 IsVolatile プロパティはブール値 (Boolean) をとります。 既定値は false で、特定の UDF メソッドが不揮発であることを意味します。
UDF を作成する
ディレクティブを追加するには
使用する型は Microsoft.Office.Excel.Server.Udf 名前空間で定義されています。 Class1.cs ファイルの先頭に using (または Imports) ディレクティブを追加すると、名前空間に含まれる型を完全に修飾せずに Microsoft.Office.Excel.Server.Udf の型を使用できるようになります。
このディレクティブを追加するには、Class1.cs ファイルのコードの先頭に次のコードを追加します。
using System.Text:
using Microsoft.Office.Excel.Server.Udf;
Imports Microsoft.Office.Excel.Server.Udf
UDF クラスとメソッドにマークを付けるには
のすぐ上
public class Class1
に次の属性を追加して、UDF クラスとしてマークClass1
します。[UdfClass]
<UdfClass>_
引数として数値 ( double 型) をとる関数を作成し、この関数では数値に 9 を掛けます。 この関数は UDF メソッドで、非自動計算です。
Class1
に次のコードを追加します。[UdfMethod] public double MyDouble(double d) { return d * 9; }
<UdfMethod> _ Public Function MyDouble(ByVal d As Double) As Double Return d * 9 End Function
注:
IsVolatile プロパティの既定値は false であるため、特定の UDF メソッドは非自動計算です。 したがって、不揮発性 UDF メソッドを として
[UdfMethod]
マークするだけで十分です。 としてマーク[UdfMethod(IsVolatile = false)]
する必要はありません。System.DateTime.Today プロパティを使用して現在の日付を返す、別の関数を作成します。 この関数は自動計算の UDF メソッドです。
Class1
に次のコードを追加します。[UdfMethod(IsVolatile = true)] public DateTime ReturnDateTimeToday() { return (DateTime.Today); }
<UdfMethod(IsVolatile := True)> _ Public Function ReturnDateTimeToday() As Date Return (Date.Today) End Function
プロジェクトをビルドするには
- [ ビルド] メニューで、[ ソリューションのビルド] をクリックします。
- プロジェクトを保存したディレクトリに、SampleUdf.dll アセンブリが見つかるはずです。
完全なコード
次のコード サンプルは、ここまでの手順で作成した Class1.cs サンプル ファイルの完全なコードです。
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Excel.Server.Udf;
namespace SampleUdf
{
[UdfClass]
public class Class1
{
[UdfMethod]
public double MyDouble(double d)
{
return d * 9;
}
[UdfMethod(IsVolatile = true)]
public DateTime ReturnDateTimeToday()
{
return (DateTime.Today);
}
}
}
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.Office.Excel.Server.Udf
Namespace SampleUdf
<UdfClass> _
Public Class Class1
<UdfMethod> _
Public Function MyDouble(ByVal d As Double) As Double
Return d * 9
End Function
<UdfMethod(IsVolatile := True)> _
Public Function ReturnDateTimeToday() As Date
Return (Date.Today)
End Function
End Class
End Namespace
関連項目
タスク
- ステップ 1: プロジェクトを作成し、UDF への参照を追加する
- ステップ 3: UDF を展開して有効にする
- 手順 4: セルから UDF のテストと呼び出しを行う
- 方法: Web サービスを呼び出す UDF の作成