Open Source .NET-bibliotek for behandling av Excel-regneark
ExcelDNA lar deg lage og distribuere Excel-tillegg ved å bruke C#, F# eller VB .NET.
Excel-DNA er en åpen kildekode API for å integrere .NET i Excel. API-en lar deg lage brukerdefinerte funksjoner (UDF-er) med høy ytelse og mer i dine opprinnelige (.xll)-tillegg for Excel. Du trenger ingen installasjon eller registrering, hele tillegget ditt kan pakkes inn i en enkelt .xll.
Excel-DNA Runtime er gratis for all bruk og distribueres under en tillatende åpen kildekode-lisens som også tillater kommersiell bruk. Den er utviklet ved hjelp av .NET og brukere må installere .NET Framework runtime. Excel- og .NET-koden integreres med hverandre ved hjelp av tillegg (.xll) som utsetter .NET-kode for excel. Du kan skrive koden din i tekstbaserte (.dna) skriptfiler (C#, Visual Basic eller F#), eller kompilerte .NET-biblioteker (.dll).
Komme i gang med Excel-DNA
Den anbefalte måten å installere ExcelDNA på er fra NuGet. Bruk følgende kommando for raskere installasjon.
Installer ExcelDNA fra NuGet
Install-Package ExcelDna.AddIn
Lag Excel-funksjoner via .NET API
ExcelDNA gir C# .NET-programmerere kompetanse til å generere Excel-funksjoner ved hjelp av C#. Du kan også bruke ExcelFunctionAttributes som Navn, Beskrivelse, Kategori, IsHidden, IsExceptionSafe og mer. IsMacroType-attributtet endrer parametrene som Excel-DNA bruker når funksjonen registreres.
Hvordan lage og bruke Excel-funksjoner 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;
}
}
Støtte for Dynamic Arrays
Åpen kildekode .NET API Excel-DNA støtter også bruken av dynamiske arrays i excel. Når du skriver en dynamisk matriseformel, avgjør den om formelen har potensial til å returnere flere verdier.
Hvordan lage en matrise og automatisk endre størrelse 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);
}
}
Støtte for diagnostisk logging
ExcelDNA API lar .NET-utviklere bruke diagnostisk logging mens de arbeider med Excel Add-In. Excel-DNA bruker standard .NET System.Diagnostics.Trace-mekanismer for diagnostisk logging.
Logg advarsler og feil i tillegget
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!");