Étape 2 : création d'une UDF de code managé
After you have added a reference to Microsoft.Office.Excel.Server.Udf.dll to your project, the next step is to create some custom functions and mark them with the Excel Services user-defined function (UDF) attributes.
You must mark your UDF class with the Microsoft.Office.Excel.Server.Udf.UdfClass attribute, and mark the UDF methods with the Microsoft.Office.Excel.Server.Udf.UdfMethod attribute.
Any methods that are not marked with the Microsoft.Office.Excel.Server.Udf.UdfMethod attribute in the UDF assembly will be ignored, because they will not be considered UDF methods.
The Microsoft.Office.Excel.Server.Udf.UdfMethod attribute has an IsVolatile property. You use the IsVolatile property to specify a UDF method as volatile or nonvolatile. The IsVolatile property takes a Boolean value. The default value is false, which means that particular UDF method is nonvolatile.
Création d'UDF
Pour ajouter des directives
Les types à utiliser sont définis dans l’espace de noms Microsoft.Office.Excel.Server.Udf . Adding a using (or Imports) directive at the top of the Class1.cs file will allow you to use the types in Microsoft.Office.Excel.Server.Udf without having to fully qualify the types in the namespace.
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
Marquez
Class1
comme classe UDF en ajoutant l’attribut suivant juste au-dessuspublic class Class1
:[UdfClass]
<UdfClass>_
Create a function that takes a number (of type double), and in the function, multiply the number by 9. The function is a UDF method that is nonvolatile. 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
Remarque
[!REMARQUE] The default value for the IsVolatile property is false, which means that particular UDF method is nonvolatile. Par conséquent, il suffit de marquer une méthode UDF non volatile comme
[UdfMethod]
. Il n’est pas nécessaire de la marquer comme[UdfMethod(IsVolatile = false)]
.Create another function that returns the current date using the System.DateTime.Today property. The function is a UDF method that is 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
- Dans le menu Générer, cliquez sur Générer la solution.
- Vous devez trouver l'assembly SampleUdf.dll dans le répertoire dans lequel vous avez enregistré votre projet.
Code complet
L'exemple de code ci-après contient le code complet de l'exemple de fichier 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
- Step 1: Creating a Project and Adding a UDF Reference
- Step 3: Deploying and Enabling UDFs
- Step 4: Testing and Calling UDFs from Cells
- How to: Create a UDF That Calls a Web Service