Freigeben über


Schritt 2: Erstellen von UDFs mit verwaltetem Code

Letzte Änderung: Donnerstag, 21. Januar 2010

Gilt für: SharePoint Server 2010

Nachdem Sie dem Projekt einen Verweis auf Microsoft.Office.Excel.Server.Udf.dll hinzugefügt haben, besteht der nächste Schritt darin, einige benutzerdefinierte Funktionen zu erstellen und sie mit Attributen benutzerdefinierter Funktionen (User-Defined Functions, UDFs) von Excel Services zu markieren.

Sie müssen die UDF-Klasse mit dem Microsoft.Office.Excel.Server.Udf.UdfClass-Attribut und die UDF-Methoden mit dem Microsoft.Office.Excel.Server.Udf.UdfMethod-Attribut markieren.

Alle Methoden, die in der UDF-Assembly nicht mit dem Microsoft.Office.Excel.Server.Udf.UdfMethod-Attribut markiert sind, werden ignoriert, da sie nicht als UDF-Methoden erachtet werden.

Das Microsoft.Office.Excel.Server.Udf.UdfMethod-Attribut hat eine IsVolatile-Eigenschaft. Mit derIsVolatile-Eigenschaft geben Sie an, ob eine UDF-Methode veränderlich oder nicht veränderlich ist. Die IsVolatile-Eigenschaft nimmt einen booleschen Wert an. Der Standardwert ist false, was bedeutet, dass die spezifische UDF-Methode nicht veränderlich ist.

Erstellen von UDFs

So fügen Sie Anweisungen hinzu

  • Die zu verwendenden Typen sind im Microsoft.Office.Excel.Server.Udf-Namespace definiert. Durch das Hinzufügen einer using-Anweisung (oder einer Imports-Anweisung) am Anfang der Datei Class1.cs ist es Ihnen möglich, diese Typen in Microsoft.Office.Excel.Server.Udf zu verwenden, ohne die Typen im Namespace vollständig qualifizieren zu müssen.

    Zum Hinzufügen dieser Anweisung fügen Sie den folgenden Code am Anfang des Codes in der Datei Class1.cs ein, und zwar hinter using System.Text:

    using Microsoft.Office.Excel.Server.Udf; 
    
    Imports Microsoft.Office.Excel.Server.Udf
    

So markieren Sie eine UDF-Klasse und UDF-Methoden

  1. Markieren Sie Class1 als UDF-Klasse, indem Sie das folgende Attribut unmittelbar vor public class Class1 hinzufügen:

    [UdfClass]
    
    <UdfClass>_
    
  2. Erstellen Sie eine Funktion, die eine Zahl (des Typs double) annimmt, und multiplizieren Sie diese Zahl in der Funktion mit 9. Die Funktion ist eine nicht veränderliche UDF-Methode. Fügen Sie Class1 den folgenden Code hinzu:

    [UdfMethod]
    public double MyDouble(double d)
    {
        return d * 9;
    }
    
    <UdfMethod> _
    Public Function MyDouble(ByVal d As Double) As Double
        Return d * 9
    End Function
    
    HinweisHinweis

    Der Standardwert für die IsVolatile-Eigenschaft ist false, was bedeutet, dass diese konkrete UDF-Methode nicht veränderlich ist. Daher reicht es aus, eine nicht veränderliche UDF-Methode als [UdfMethod] zu markieren. Es ist nicht notwendig, sie als [UdfMethod(IsVolatile = false)] zu markieren.

  3. Erstellen Sie eine weitere Funktion, die das aktuelle Datum zurückgibt, und verwenden Sie hierfür die System.DateTime.Today-Eigenschaft. Die Funktion ist eine veränderliche UDF-Methode. Fügen Sie Class1 den folgenden Code hinzu:

    [UdfMethod(IsVolatile = true)]
    public DateTime ReturnDateTimeToday()
    {
        return (DateTime.Today);
    }      
    
    <UdfMethod(IsVolatile := True)> _
    Public Function ReturnDateTimeToday() As Date
        Return (Date.Today)
    End Function
    

So erstellen Sie das Projekt

  1. Klicken Sie im Menü Erstellen auf Projektmappe erstellen.

  2. Sie sollten die Assembly SampleUdf.dll in dem Verzeichnis finden, in dem Sie Ihr Projekt gespeichert haben.

Vollständiger Code

Das folgende Codebeispiel ist der vollständige Code in der Beispieldatei Class1.cs, die in den vorherigen Verfahren beschrieben wurde.

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

Siehe auch

Aufgaben

Schritt 1: Erstellen eines Projekts und Hinzufügen eines UDF-Verweises

Schritt 3: Bereitstellen und Aktivieren von UDF-Dateien

Schritt 4: Testen und Aufrufen von UDFs aus Zellen

Gewusst wie: Erstellen einer UDF, die einen Webdienst aufruft

Konzepte

Exemplarische Vorgehensweise: Entwickeln einer UDF mit verwaltetem Code

Grundlegendes zu Excel Services-UDFs