Excel Cədvəllərinin Emalı üçün Açıq Mənbəli .NET Kitabxanası  

ExcelDNA sizə C#, F# və ya VB .NET istifadə edərək Excel Əlavələri yaratmağa və yerləşdirməyə imkan verir.

Excel-DNA .NET-i Excel-ə inteqrasiya etmək üçün açıq mənbə API-dir. API sizə Excel üçün yerli (.xll) əlavələrində yüksək performanslı istifadəçi təyin edilmiş funksiyalar (UDF) və daha çoxunu yaratmağa imkan verir. Heç bir quraşdırmaya və ya qeydiyyata ehtiyacınız yoxdur, bütün əlavəniz tək .xll-ə yığıla bilər.

Excel-DNA Runtime bütün istifadə üçün pulsuzdur və kommersiya istifadəsinə də icazə verən açıq mənbə lisenziyası altında paylanır. O, .NET istifadə edərək hazırlanmışdır və istifadəçilər .NET Framework iş vaxtını quraşdırmalıdırlar. Excel və .NET kodu .NET kodunu excel üçün ifşa edən Add-In (.xll) istifadə edərək bir-biri ilə inteqrasiya edir. Siz kodunuzu mətn əsaslı (.dna) skript fayllarında (C#, Visual Basic və ya F#) və ya tərtib edilmiş .NET kitabxanalarında (.dll) yaza bilərsiniz.

Previous Next

Excel-DNT ilə işə başlamaq

ExcelDNA-nı quraşdırmanın tövsiyə olunan yolu NuGet-dəndir, daha sürətli quraşdırma üçün aşağıdakı əmrdən istifadə edin.

NuGet-dən ExcelDNA-nı quraşdırın

 Install-Package ExcelDna.AddIn

.NET API vasitəsilə Excel Funksiyaları yaradın

ExcelDNA C# .NET proqramçılarına C# istifadə edərək Excel funksiyalarını yaratmaq bacarığı verir. Siz həmçinin Ad, Təsvir, Kateqoriya, IsHidden, IsExceptionSafe və s. kimi ExcelFunctionAtributlarından istifadə edə bilərsiniz. IsMacroType atributu funksiyanı qeydiyyatdan keçirərkən Excel-DNA-nın istifadə etdiyi parametrləri dəyişir.

.NET API vasitəsilə Excel funksiyalarını necə yaratmalı və istifadə etməli

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;
    }
}

Dinamik massivlərə dəstək

Açıq mənbə .NET API Excel-DNA da excel daxilində dinamik massivlərin istifadəsini dəstəkləyir. Dinamik massiv düsturu yazdığınız zaman o, düsturun birdən çox dəyəri qaytarmaq potensialının olub olmadığını müəyyən edir.

C# API vasitəsilə massivi necə etmək və nəticənin avtomatik ölçüsünü dəyişmək olar

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);
        }
    }

Diaqnostik Giriş Dəstəyi

ExcelDNA API .NET tərtibatçılarına Excel Əlavəsi ilə işləyərkən diaqnostik girişdən istifadə etməyə imkan verir. Excel-DNA diaqnostik qeyd üçün standart .NET System.Diagnostics.Trace mexanizmlərindən istifadə edir.

Add-in daxilində Xəbərdarlıqları və Səhvləri qeyd edin

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!");
 Azəri