Partager via


Forum Aux Questions sur les UDF Excel Services

Dernière modification : jeudi 21 janvier 2010

S’applique à : SharePoint Server 2010

Dans cet article
Création d'UDF dans du code managé
Types de données
XLL

Voici quelques questions fréquemment posées sur les fonctions définies par l'utilisateur (UDF, User-Defined Functions) de Excel Services.

Création d'UDF dans du code managé

Qu'est-ce qu'une classe UDF prise en charge ?

La classe UDF d'un assembly UDF doit être publique. Elle peut être sealed. Elle ne peut pas être abstraite, interne ou privée. Elle doit posséder un constructeur public sans paramètre. Pour les langages qui ne génèrent pas automatiquement de constructeur public sans paramètre (par exemple C#), vous pouvez n'avoir aucun constructeur.

Qu'est-ce qu'une méthode UDF prise en charge ?

La méthode UDF d'un assembly UDF doit être publique. La méthode UDF doit être thread-safe.

Une méthode UDF ne peut pas avoir les éléments suivants :

  • paramètres ref ou out ;

  • attributs retval ;

  • arguments Optional ;

  • types de données non pris en charge.

La méthode UDF doit également avoir un type de retour pris en charge. Pour obtenir la liste des types de données pris en charge, voir la section « Types de données » de cette rubrique.

Puis-je appeler un service Web à partir d'un assembly UDF ?

Oui. Pour obtenir un exemple, voir le code UDF suivant. Voir également Procédure : créer une UDF qui appelle un service Web.

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

Types de données

Quels sont les types de données pouvant servir de paramètres UDF ?

Les types de données pris en charge sont les suivants :

  • Types numériques : Double, Single, Int32, UInt32, Int16, UInt16, Byte, Sbyte

  • Chaîne

  • Booléen

  • Tableaux d'objets : tableaux à une ou deux dimensions, c'est-à-dire objet [] et objet [,]

  • Date et heure

Quels sont les types valeur de retour pris en charge ?

Les types valeur de retour pris en charge sont les suivants :

  • Types numériques : Double, Single, Int32, UInt32, Int16, UInt16, Byte, Sbyte

  • Chaîne

  • Booléen

  • Tableaux d'objets : tableaux à une ou deux dimensions, c'est-à-dire objet [], objet [,], int[] et int[,])

  • Date et heure

  • Objet

XLL

Les XLL sont-ils pris en charge ?

Pas directement. Excel Services charge et appelle uniquement les UDF de code managé. Toutefois, vous pouvez écrire un wrapper de code managé pour appeler les XLL et les déployer sur le serveur, conjointement avec l'assembly de wrappers de code managé.

Voir aussi

Tâches

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

Procédure : Approuver un emplacement

Procédure : intercepter des exceptions

Concepts

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

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

Architecture d'Excel Services

Excel Services Alerts

Problèmes connus et conseils Excel Services

Méthodes conseillées pour Excel Services