Bibliothèque Open Source .NET pour le traitement des feuilles de calcul Excel
ExcelDNA vous permet de créer et de déployer des compléments Excel à l'aide de C#, F# ou VB .NET.
Excel-DNA est une API open source pour intégrer .NET dans Excel. L'API vous permet de créer des fonctions définies par l'utilisateur (UDF) hautes performances et plus encore dans vos compléments natifs (.xll) pour Excel. Vous n'avez besoin d'aucune installation ou inscription, l'intégralité de votre complément peut être regroupée dans un seul fichier .xll.
Le runtime Excel-DNA est gratuit pour toute utilisation et est distribué sous une licence open source permissive qui permet également une utilisation commerciale. Il est développé à l'aide de .NET et les utilisateurs doivent installer le runtime .NET Framework. Le code Excel et le code .NET s'intègrent l'un à l'autre à l'aide du complément (.xll) qui expose le code .NET à Excel. Vous pouvez écrire votre code dans des fichiers de script textuels (.dna) (C#, Visual Basic ou F#) ou des bibliothèques .NET compilées (.dll).
Premiers pas avec Excel-DNA
L'installation d'ExcelDNA est recommandée à partir de NuGet, Veuillez utiliser la commande suivante pour une installation plus rapide.
Installer ExcelDNA à partir de NuGet
Install-Package ExcelDna.AddIn
Créer des fonctions Excel via l'API .NET
ExcelDNA donne aux programmeurs C# .NET la compétence pour générer des fonctions Excel à l'aide de C#. Vous pouvez également utiliser ExcelFunctionAttributes comme Name, Description, Category, IsHidden, IsExceptionSafe, etc. L'attribut IsMacroType modifie les paramètres qu'Excel-DNA utilise lors de l'enregistrement de la fonction.
Comment créer et utiliser des fonctions Excel via .NET API
public class GetInfoFunctions
{
[ExcelFunction(Description = "Returns the result of xlfGetCell.", IsMacroType = true)]
public static object GetCell(int type_num, [ExcelArgument(AllowReference = true)] object reference)
{
return XlCall.Excel(XlCall.xlfGetCell, type_num, reference);
}
[ExcelFunction(Description = "Returns the result of xlfGetWorkspace.", IsMacroType = true)]
public static object GetWorkspace(int type_num)
{
return XlCall.Excel(XlCall.xlfGetWorkspace, type_num);
}
[ExcelFunction(Description = "Returns the current list separator.", IsMacroType = true)]
public static string GetListSeparator(int type_num)
{
object[,] workspaceSettings = (object[,])XlCall.Excel(XlCall.xlfGetWorkspace, 37);
string listSeparator = (string)workspaceSettings[0, 4];
return listSeparator;
}
}
Prise en charge des tableaux dynamiques
L'API .NET open source Excel-DNA prend également en charge l'utilisation de tableaux dynamiques dans Excel. Lorsque vous écrivez une formule matricielle dynamique, elle détermine si la formule a le potentiel de renvoyer plusieurs valeurs.
Comment couler une image Auto Restaurer le résultat via C API
public static object dnaMakeArrayAndResize(int rows, int columns, string unused, string unusedtoo)
{
object[,] result = dnaMakeArray(rows, columns);
return ArrayResizer.dnaResize(result);
// Can also call Resize via Excel - so if the Resize add-in is not part of this code, it should still work
// (though calling direct is better for large arrays - it prevents extra marshaling).
// return XlCall.Excel(XlCall.xlUDF, "Resize", result);
}
public static double[,] dnaMakeArrayAndResizeDoubles(int rows, int columns)
{
double[,] result = dnaMakeArrayDoubles(rows, columns);
return ArrayResizer.dnaResizeDoubles(result);
}
}
Soutien de logistique diagnostique
L'API ExcelDNA permet aux développeurs .NET d'utiliser la journalisation de diagnostic tout en travaillant avec le complément Excel. Excel-DNA utilise les mécanismes standard .NET System.Diagnostics.Trace pour la journalisation des diagnostics.
Avertissements et erreurs dans l'ajout
public void AutoOpen()
{
// Log warnings and errors to the Excel-DNA LogDisplay
Trace.Listeners.Add(new LogDisplayTraceListener());
}
...
Trace.TraceInformation("Trace information!");
Trace.TraceWarning("Trace warning!");
Trace.TraceError("Trace error!");