Open Source .NET-bibliotek för bearbetning av Excel-kalkylblad
ExcelDNA låter dig skapa och distribuera Excel-tillägg med C#, F# eller VB .NET.
Excel-DNA är ett API med öppen källkod för att integrera .NET i Excel. API:er låter dig skapa högpresterande användardefinierade funktioner (UDF) och mer i dina inbyggda (.xll) tillägg för Excel. Du behöver ingen installation eller registrering, hela ditt tillägg kan packas i en enda .xll.
Excel-DNA Runtime är gratis för all användning och distribueras under en tillåten öppen källkodslicens som även tillåter kommersiell användning. Den är utvecklad med .NET och användare måste installera .NET Framework runtime. Excel- och .NET-koden integreras med varandra med hjälp av tillägg (.xll) som exponerar .NET-kod för excel. Du kan skriva din kod i textbaserade (.dna) skriptfiler (C#, Visual Basic eller F#), eller kompilerade .NET-bibliotek (.dll).
Komma igång med Excel-DNA
Det rekommenderade sättet att installera ExcelDNA är från NuGet. Använd följande kommando för snabbare installation.
Installera ExcelDNA från NuGet
Install-Package ExcelDna.AddIn
Skapa Excel-funktioner via .NET API
ExcelDNA ger C# .NET-programmerare kompetensen att generera Excel-funktioner med C#. Du kan också använda ExcelFunctionAttributes som Name, Description, Category, IsHidden, IsExceptionSafe och mer. Attributet IsMacroType ändrar parametrarna som Excel-DNA använder när funktionen registreras.
Hur man skapar och använder 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;
}
}
Stöd för Dynamic Arrays
Open source .NET API Excel-DNA stöder också användningen av dynamiska arrayer i excel. När du skriver en dynamisk matrisformel avgör den om formeln har potential att returnera flera värden.
Hur man gör en Array & Auto Resize the Result 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);
}
}
Diagnostic Logging Support
ExcelDNA API tillåter .NET-utvecklare att använda diagnostisk loggning medan de arbetar med Excel-tillägg. Excel-DNA använder standardmekanismerna .NET System.Diagnostics.Trace för diagnostisk loggning.
Log Warnings and Errors inside Add-in
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!");