Partager via


Étape 2 : création d'une UDF de code managé

Dernière modification : jeudi 21 janvier 2010

S’applique à : SharePoint Server 2010

Une fois que vous avez ajouté une référence à Microsoft.Office.Excel.Server.Udf.dll pour votre projet, l'étape suivante consiste à créer des fonctions personnalisées et à les marquer avec les attributs de fonctions définies par l'utilisateur (UDF, User-Defined Functions) des Excel Services.

Vous devez marquer votre classe UDF avec l'attribut Microsoft.Office.Excel.Server.Udf.UdfClass et marquer les méthodes UDF avec l'attribut Microsoft.Office.Excel.Server.Udf.UdfMethod.

Les méthodes qui ne sont pas marquées avec l'attribut Microsoft.Office.Excel.Server.Udf.UdfMethod dans l'assembly UDF sont ignorées, car elles ne sont pas considérées comme des méthodes UDF.

L'attribut Microsoft.Office.Excel.Server.Udf.UdfMethod a une propriété IsVolatile. Vous utilisez la propriété IsVolatile pour spécifier une méthode UDF comme étant volatile ou non volatile. La propriété IsVolatile accepte une valeur booléenne. La valeur par défaut est false, ce qui signifie que cette méthode UDF en particulier est non volatile.

Création d'UDF

Ajouter des directives

  • Les types à utiliser sont définis dans l'espace de noms Microsoft.Office.Excel.Server.Udf. L'ajout d'une directive using (ou Imports) en haut du fichier Class1.cs vous permet d'utiliser les types de Microsoft.Office.Excel.Server.Udf sans avoir à qualifier pleinement les types dans l'espace de noms.

    Pour ajouter cette directive, ajoutez le code suivant au début de votre code dans le fichier Class1.cs, après using System.Text:

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

Marquer une classe et des méthodes UDF

  1. Marquez Class1 en tant que classe UDF en ajoutant l'attribut suivant juste au-dessus de public class Class1 :

    [UdfClass]
    
    <UdfClass>_
    
  2. Créez une fonction qui accepte un nombre (de type double), et dans la fonction, multipliez le nombre par 9. La fonction est une méthode UDF non volatile. Ajoutez le code suivant à 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
    

    Notes

    La valeur par défaut de la propriété IsVolatile est false, ce qui signifie que cette méthode UDF en particulier est non volatile. Par conséquent, il suffit de marquer une méthode UDF non volatile avec [UdfMethod]. Il n'est pas nécessaire de la marquer avec [UdfMethod(IsVolatile = false)].

  3. Créez une autre fonction qui renvoie la date actuelle à l'aide de la propriété System.DateTime.Today. La fonction est une méthode UDF volatile. Ajoutez le code suivant à Class1 :

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

Créer le projet

  1. Dans le menu Générer, cliquez sur Générer la solution.

  2. Vous devez trouver l'assembly SampleUdf.dll dans le répertoire dans lequel vous avez enregistré votre projet.

Code complet

L'exemple de code suivant est le code complet du fichier d'exemple Class1.cs décrit dans les procédures précédentes.

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

Voir aussi

Tâches

Étape 1 : création d'un projet et ajout d'une référence du fichier UDF

Étape 3 : déploiement et activation des fonctions définies par l'utilisateur (UDF)

Étape 4: test et appel des fonctions définies par l'utilisateur dans des cellules

Procédure : créer une UDF qui appelle un service Web

Concepts

Procédure pas à pas : développement d'une UDF avec code managé

Présentation des fonctions définies par l'utilisateur Excel Services