1. Producten
  2.   Spreadsheet
  3.   .NET
  4.   ExcelDNA
 
  

Open Source .NET-bibliotheek voor het verwerken van Excel-spreadsheets  

Met ExcelDNA kunt u Excel-invoegtoepassingen maken en implementeren met behulp van C#, F# of VB .NET.

Excel-DNA is een open source API om .NET te integreren in Excel. Met de API kunt u hoogwaardige, door de gebruiker gedefinieerde functies (UDF's) en meer maken in uw native (.xll) invoegtoepassingen voor Excel. U hebt geen installatie of registratie nodig, uw volledige invoegtoepassing kan in een enkele .xll worden verpakt.

De Excel-DNA Runtime is gratis voor alle gebruik en wordt gedistribueerd onder een permissieve open-sourcelicentie die ook commercieel gebruik toestaat. Het is ontwikkeld met .NET en gebruikers moeten de .NET Framework-runtime installeren. De Excel- en de .NET-code kunnen met elkaar worden geïntegreerd met behulp van invoegtoepassing (.xll) die .NET-code blootstelt aan Excel. U kunt uw code schrijven in op tekst gebaseerde (.dna) scriptbestanden (C#, Visual Basic of F#), of in gecompileerde .NET-bibliotheken (.dll).

Previous Next

Aan de slag met Excel-DNA

De aanbevolen manier om ExcelDNA te installeren is van NuGet. Gebruik de volgende opdracht voor een snellere installatie.

Installeer ExcelDNA van NuGet

 Install-Package ExcelDna.AddIn

Excel-functies maken via .NET API

ExcelDNA geeft C# .NET-programmeurs de competentie om Excel-functies te genereren met behulp van C#. U kunt ook ExcelFunctionAttributes gebruiken, zoals Naam, Beschrijving, Categorie, IsHidden, IsExceptionSafe en meer. Het IsMacroType-attribuut wijzigt de parameters die Excel-DNA gebruikt bij het registreren van de functie.

Hoe ga je Create Use Excel Function via 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;
    }
}

Ondersteuning voor dynamische arrays

De open source .NET API Excel-DNA ondersteunt ook het gebruik van dynamische arrays binnen Excel. Wanneer u een dynamische matrixformule schrijft, bepaalt deze of de formule het potentieel heeft om meerdere waarden te retourneren.

Hoe maak je een Array 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

Met ExcelDNA API kunnen .NET-ontwikkelaars diagnostische logboekregistratie gebruiken terwijl ze met de Excel-invoegtoepassing werken. Excel-DNA gebruikt de standaard .NET System.Diagnostics.Trace-mechanismen voor diagnostische logging.

Log Warning en Errors in 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!");
 Dutch