Бібліотека .NET з відкритим кодом для обробки електронних таблиць Excel  

ExcelDNA дозволяє створювати та розгортати надбудови Excel за допомогою C#, F# або VB .NET.

Excel-DNA — це API з відкритим кодом для інтеграції .NET у Excel. API дозволяє створювати високопродуктивні користувацькі функції (UDF) і багато іншого у ваших власних (.xll) надбудовах для Excel. Вам не потрібна установка чи реєстрація, всю надбудову можна запакувати в єдиний .xll.

Excel-DNA Runtime є безкоштовним для будь-якого використання та розповсюджується за дозвільною ліцензією на відкритий код, яка також дозволяє комерційне використання. Його розроблено з використанням .NET, і користувачі повинні встановити середовище виконання .NET Framework. Код Excel і .NET інтегруються один з одним за допомогою надбудови (.xll), яка надає код .NET для Excel. Ви можете написати свій код у текстових (.dna) файлах сценаріїв (C#, Visual Basic або F#) або скомпільованих бібліотеках .NET (.dll).

Previous Next

Початок роботи з Excel-DNA

Рекомендований спосіб інсталяції ExcelDNA — із NuGet. Скористайтеся такою командою для швидшої інсталяції.

Встановіть ExcelDNA з NuGet

 Install-Package ExcelDna.AddIn

Створюйте функції Excel за допомогою .NET API

ExcelDNA дає програмістам C# .NET можливість генерувати функції Excel за допомогою C#. Ви також можете використовувати ExcelFunctionAttributes, як-от Name, Description, Category, IsHidden, IsExceptionSafe тощо. Атрибут IsMacroType змінює параметри, які Excel-DNA використовує під час реєстрації функції.

Як створювати та використовувати функції Excel через .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;
    }
}

Підтримка динамічних масивів

.NET API Excel-DNA з відкритим кодом також підтримує використання динамічних масивів усередині Excel. Коли ви пишете формулу динамічного масиву, вона визначає, чи може формула повертати кілька значень.

Як зробити Array & Auto Resize результати через 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);
        }
    }

Діагностична підтримка

API ExcelDNA дозволяє розробникам .NET використовувати журнал діагностики під час роботи з надбудовою Excel. Excel-DNA використовує стандартні механізми .NET System.Diagnostics.Trace для журналювання діагностики.

Попередження та помилки в додатку

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!");
 Українська