1. Produkti
  2.   Izklājlapa
  3.   .NET
  4.   ExcelDNA
 
  

Atvērtā pirmkoda .NET bibliotēka Excel izklājlapu apstrādei  

ExcelDNA ļauj izveidot un izvietot Excel pievienojumprogrammas, izmantojot C#, F# vai VB .NET.

Excel-DNA ir atvērtā pirmkoda API, lai integrētu .NET programmā Excel. API ļauj izveidot augstas veiktspējas lietotāja definētas funkcijas (UDF) un citas programmas Excel vietējās (.xll) pievienojumprogrammās. Jums nav nepieciešama instalēšana vai reģistrācija, visu jūsu pievienojumprogrammu var iepakot vienā .xll failā.

Programmu Excel-DNA Runtime var izmantot bez maksas, un to izplata saskaņā ar atļautu atvērtā pirmkoda licenci, kas ļauj izmantot arī komerciālu izmantošanu. Tas ir izstrādāts, izmantojot .NET, un lietotājiem ir jāinstalē .NET Framework izpildlaiks. Excel un .NET kods tiek integrēti viens ar otru, izmantojot pievienojumprogrammu (.xll), kas pakļauj .NET kodu programmai Excel. Varat rakstīt kodu teksta (.dna) skriptu failos (C#, Visual Basic vai F#) vai kompilētās .NET bibliotēkās (.dll).

Previous Next

Darba sākšana ar Excel-DNS

Ieteicamais ExcelDNA instalēšanas veids ir no NuGet. Lūdzu, izmantojiet šo komandu ātrākai instalēšanai.

Instalējiet ExcelDNA no NuGet

 Install-Package ExcelDna.AddIn

Izveidojiet Excel funkcijas, izmantojot .NET API

ExcelDNA sniedz C# .NET programmētājiem kompetenci ģenerēt Excel funkcijas, izmantojot C#. Varat arī izmantot ExcelFunctionAttributes, piemēram, nosaukumu, aprakstu, kategoriju, IsHidden, IsExceptionSafe un citus. Atribūts IsMacroType maina parametrus, ko Excel-DNA izmanto, reģistrējot funkciju.

Kā izveidot un izmantot Excel funkcijas, izmantojot .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;
    }
}

Atbalsts dinamiskajiem masīviem

Atvērtā koda .NET API Excel-DNA atbalsta arī dinamisko masīvu izmantošanu programmā Excel. Rakstot dinamiskā masīva formulu, tā nosaka, vai formulai ir iespēja atgriezt vairākas vērtības.

Kā izveidot masīvu un automātiski mainīt rezultāta izmērus, izmantojot 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);
        }
    }

Diagnostikas reģistrēšanas atbalsts

ExcelDNA API ļauj .NET izstrādātājiem izmantot diagnostikas reģistrēšanu, strādājot ar Excel pievienojumprogrammu. Excel-DNA diagnostikas reģistrēšanai izmanto standarta .NET System.Diagnostics.Trace mehānismus.

Reģistrējieties brīdinājumi un kļūdas pievienojumprogrammā

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