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