Open Source .NET-bibliotek til behandling af Excel-regneark
ExcelDNA giver dig mulighed for at oprette og implementere Excel-tilføjelsesprogrammer ved hjælp af C#, F# eller VB .NET.
Excel-DNA er en open source API til at integrere .NET i Excel. API'en giver dig mulighed for at oprette højtydende brugerdefinerede funktioner (UDF'er) og mere i dine oprindelige (.xll) tilføjelsesprogrammer til Excel. Du behøver ingen installation eller registrering, hele dit tilføjelsesprogram kan pakkes i en enkelt .xll.
Excel-DNA Runtime er gratis til al brug og distribueres under en tilladelig open source-licens, der også tillader kommerciel brug. Den er udviklet ved hjælp af .NET, og brugerne skal installere .NET Framework-runtimen. Excel- og .NET-koden integreres med hinanden ved hjælp af tilføjelsesmodul (.xll), der udsætter .NET-kode for excel. Du kan skrive din kode i tekstbaserede (.dna) scriptfiler (C#, Visual Basic eller F#) eller kompilerede .NET-biblioteker (.dll).
Kom godt i gang med Excel-DNA
Den anbefalede måde at installere ExcelDNA på er fra NuGet. Brug venligst følgende kommando for hurtigere installation.
Installer ExcelDNA fra NuGet
Install-Package ExcelDna.AddIn
Opret Excel-funktioner via .NET API
ExcelDNA giver C# .NET-programmører kompetencen til at generere Excel-funktioner ved hjælp af C#. Du kan også bruge ExcelFunctionAttributes som Name, Description, Category, IsHidden, IsExceptionSafe og mere. IsMacroType-attributten ændrer de parametre, Excel-DNA bruger, når funktionen registreres.
Sådan opretter og bruger du Excel-funktioner 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;
}
}
Understøttelse af Dynamic Arrays
Open source .NET API Excel-DNA understøtter også brugen af dynamiske arrays i excel. Når du skriver en dynamisk matrixformel, bestemmer den, om formlen har potentialet til at returnere flere værdier.
Sådan laver du et array og ændrer automatisk størrelsen på resultatet 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);
}
}
Support til diagnostisk logning
ExcelDNA API giver .NET-udviklere mulighed for at bruge diagnostisk logning, mens de arbejder med Excel Add-In. Excel-DNA bruger standard .NET System.Diagnostics.Trace-mekanismer til diagnostisk logning.
Log advarsler og fejl inde i tilføjelsesprogrammet
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!");