Thư viện .NET mã nguồn mở để xử lý bảng tính Excel  

ExcelDNA cho phép bạn tạo và triển khai Phần bổ trợ Excel bằng C #, F # hoặc VB .NET.

Excel-DNA là một API mã nguồn mở để tích hợp .NET vào Excel. API cho phép bạn tạo các hàm hiệu suất cao do người dùng xác định (UDF) và hơn thế nữa trong phần bổ trợ gốc (.xll) của bạn cho Excel. Bạn không cần cài đặt hoặc đăng ký, toàn bộ phần bổ trợ của bạn có thể được đóng gói thành một tệp .xll duy nhất.

Excel-DNA Runtime là miễn phí cho tất cả việc sử dụng và được phân phối theo giấy phép nguồn mở được phép cũng cho phép sử dụng thương mại. Nó được phát triển bằng cách sử dụng .NET và người dùng phải cài đặt thời gian chạy .NET Framework. Excel và mã .NET tích hợp với nhau bằng phần bổ trợ (.xll) để hiển thị mã .NET cho excel. Bạn có thể viết mã của mình trong các tệp tập lệnh dựa trên văn bản (.dna) (C #, Visual Basic hoặc F #) hoặc các thư viện .NET đã biên dịch (.dll).

Previous Next

Bắt đầu với Excel-DNA

Cách được khuyến nghị để cài đặt ExcelDNA là từ NuGet, Vui lòng sử dụng lệnh sau để cài đặt nhanh hơn.

Cài đặt ExcelDNA từ NuGet

 Install-Package ExcelDna.AddIn

Tạo hàm Excel qua .NET API

ExcelDNA cung cấp cho các lập trình viên C # .NET khả năng tạo các hàm Excel bằng C #. Bạn cũng có thể sử dụng ExcelFunctionAttributes như Name, Description, Category, IsHidden, IsExceptionSafe, v.v. Thuộc tính IsMacroType thay đổi các tham số mà Excel-DNA sử dụng khi đăng ký hàm.

Làm thế nào để tạo ra và sử dụng chức năng Excel thông qua .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;
    }
}

Hỗ trợ cho Mảng động

Nguồn mở .NET API Excel-DNA cũng hỗ trợ việc sử dụng các mảng động bên trong excel. Khi bạn viết một công thức mảng động, nó sẽ xác định xem công thức có khả năng trả về nhiều giá trị hay không.

Làm thế nào để tạo ra một mảng và tự động kích hoạt kết quả thông qua 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);
        }
    }

Hỗ trợ đăng ký chẩn đoán

ExcelDNA API cho phép các nhà phát triển .NET sử dụng ghi nhật ký chẩn đoán trong khi làm việc với Excel Add-In. Excel-DNA sử dụng cơ chế .NET System.Diagnostics.Trace tiêu chuẩn để ghi nhật ký chẩn đoán.

Cảnh báo và các lỗi trong

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!");
 Tiếng Việt