Atvirojo kodo .NET biblioteka, skirta „Excel“ skaičiuoklėms apdoroti  

„ExcelDNA“ leidžia kurti ir įdiegti „Excel“ priedus naudojant C#, F# arba VB .NET.

„Excel-DNA“ yra atvirojo kodo API, skirta .NET integruoti į „Excel“. API leidžia kurti didelio našumo vartotojo apibrėžtas funkcijas (UDF) ir daugiau vietiniuose (.xll) prieduose, skirtuose „Excel“. Jums nereikia jokio diegimo ar registracijos, visas jūsų priedas gali būti supakuotas į vieną .xll.

„Excel-DNA Runtime“ yra nemokama bet kokiam naudojimui ir platinama pagal leistiną atvirojo kodo licenciją, kuri taip pat leidžia naudoti komerciniais tikslais. Jis sukurtas naudojant .NET, o vartotojai turi įdiegti .NET Framework vykdymo laiką. „Excel“ ir .NET kodas integruojami vienas su kitu naudojant priedą (.xll), kuris atskleidžia .NET kodą „Excel“. Kodą galite įrašyti į tekstinius (.dna) scenarijaus failus (C#, Visual Basic arba F#) arba sukompiliuotas .NET bibliotekas (.dll).

Previous Next

Darbo su Excel-DNA pradžia

Rekomenduojamas ExcelDNA diegimo būdas yra iš NuGet. Norėdami greičiau įdiegti, naudokite šią komandą.

Įdiekite ExcelDNA iš NuGet

 Install-Package ExcelDna.AddIn

Kurkite „Excel“ funkcijas naudodami .NET API

ExcelDNA suteikia C# .NET programuotojams kompetencijos generuoti Excel funkcijas naudojant C#. Taip pat galite naudoti ExcelFunctionAttributes, pvz., Pavadinimas, Aprašymas, Kategorija, IsHidden, IsExceptionSafe ir kt. Atributas IsMacroType pakeičia parametrus, kuriuos Excel-DNA naudoja registruodamas funkciją.

Kaip sukurti ir naudoti „Excel“ funkcijas naudojant .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;
    }
}

Dinaminių masyvų palaikymas

Atvirojo kodo .NET API Excel-DNA taip pat palaiko dinaminių masyvų naudojimą „Excel“. Kai rašote dinaminio masyvo formulę, ji nustato, ar formulė gali grąžinti kelias reikšmes.

Kaip sukurti masyvą ir automatiškai pakeisti rezultato dydį naudojant 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);
        }
    }

Diagnostikos registravimo palaikymas

„ExcelDNA“ API leidžia .NET kūrėjams naudoti diagnostinį registravimą dirbant su „Excel“ priedu. „Excel-DNA“ diagnostiniam registravimui naudoja standartinius .NET System.Diagnostics.Trace mechanizmus.

Prisijunkite prieduose esančius įspėjimus ir klaidas

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!");
 Lietuvių