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é