Avoimen lähdekoodin .NET-kirjasto Excel-laskentataulukoiden käsittelyyn
ExcelDNA:n avulla voit luoda ja ottaa käyttöön Excel-apuohjelmia käyttämällä C#-, F#- tai VB.NET-yhteyttä.
Excel-DNA on avoimen lähdekoodin sovellusliittymä .NETin integroimiseksi Exceliin. Sovellusliittymän avulla voit luoda tehokkaita käyttäjän määrittämiä toimintoja (UDF) ja paljon muuta Excelin alkuperäisissä (.xll)-apuohjelmissasi. Et tarvitse asennusta tai rekisteröintiä, koko apuohjelmasi voidaan pakata yhteen .xll-tiedostoon.
Excel-DNA Runtime on ilmainen kaikkeen käyttöön, ja sitä jaetaan sallivalla avoimen lähdekoodin lisenssillä, joka sallii myös kaupallisen käytön. Se on kehitetty .NET:n avulla, ja käyttäjien on asennettava .NET Framework -ajonaika. Excel ja .NET-koodi integroituvat toisiinsa apuohjelmalla (.xll), joka paljastaa .NET-koodin excelille. Voit kirjoittaa koodisi tekstipohjaisiin (.dna) komentosarjatiedostoihin (C#, Visual Basic tai F#) tai käännettyihin .NET-kirjastoihin (.dll).
Excel-DNA:n käytön aloittaminen
Suositeltu tapa asentaa ExcelDNA on NuGet. Käytä seuraavaa komentoa nopeuttaaksesi asennusta.
Asenna ExcelDNA NuGetistä
Install-Package ExcelDna.AddIn
Luo Excel-funktioita .NET API:n kautta
ExcelDNA antaa C#.NET-ohjelmoijille pätevyyden luoda Excel-funktioita C#:n avulla. Voit myös käyttää ExcelFunctionAttributes-määritteitä, kuten nimi, kuvaus, luokka, IsHidden, IsExceptionSafe ja paljon muuta. IsMacroType-attribuutti muuttaa parametreja, joita Excel-DNA käyttää funktiota rekisteröidessään.
Excel-funktioiden luominen ja käyttäminen .NET API:n kautta
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;
}
}
Tuki dynaamisille taulukoille
Avoimen lähdekoodin .NET API Excel-DNA tukee myös dynaamisten taulukoiden käyttöä Excelin sisällä. Kun kirjoitat dynaamista taulukkokaavaa, se määrittää, onko kaava mahdollista palauttaa useita arvoja.
Kuinka tehdä taulukko ja muuttaa automaattisesti tuloksen kokoa C# API:n kautta
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);
}
}
Diagnostinen kirjaustuki
ExcelDNA-sovellusliittymän avulla .NET-kehittäjät voivat käyttää diagnostiikkalokia työskennellessään Excel-apuohjelman kanssa. Excel-DNA käyttää tavallisia .NET System.Diagnostics.Trace -mekanismeja diagnostiseen lokiin.
Kirjaa varoitukset ja virheet apuohjelmassa
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!");