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).

Previous Next

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