1. Produk
  2.   Hamparan
  3.   .NET
  4.   ExcelDNA
 
  

Perpustakaan .NET Sumber Terbuka untuk Memproses Hamparan Excel  

ExcelDNA membolehkan anda mencipta & menggunakan Excel Add-Ins menggunakan C#, F# atau VB .NET.

Excel-DNA ialah API sumber terbuka untuk menyepadukan .NET ke dalam Excel. API membolehkan anda membuat fungsi takrif pengguna berprestasi tinggi (UDF) dan banyak lagi dalam tambahan asli (.xll) anda untuk Excel. Anda tidak memerlukan sebarang pemasangan atau pendaftaran, keseluruhan tambahan anda boleh dibungkus ke dalam satu .xll.

Excel-DNA Runtime adalah percuma untuk semua kegunaan dan diedarkan di bawah lesen sumber terbuka permisif yang turut membenarkan penggunaan komersial. Ia dibangunkan menggunakan .NET dan pengguna perlu memasang .NET Framework runtime. Excel dan kod .NET berintegrasi antara satu sama lain menggunakan Add-In (.xll) yang mendedahkan kod .NET kepada cemerlang. Anda boleh menulis kod anda dalam fail skrip (.dna) berasaskan teks (C#, Visual Basic atau F#), atau pustaka .NET yang disusun (.dll).

Previous Next

Bermula dengan Excel-DNA

Cara yang disyorkan untuk memasang ExcelDNA adalah daripada NuGet, Sila gunakan arahan berikut untuk pemasangan yang lebih pantas.

Pasang ExcelDNA daripada NuGet

 Install-Package ExcelDna.AddIn

Cipta Fungsi Excel melalui .NET API

ExcelDNA memberikan pengaturcara C# .NET kecekapan untuk menjana fungsi Excel menggunakan C#. Anda juga boleh menggunakan ExcelFunctionAttributes seperti Name, Description, Category, IsHidden, IsExceptionSafe dan banyak lagi. Atribut IsMacroType menukar parameter Excel-DNA yang digunakan semasa mendaftarkan fungsi.

Cara Mencipta & Menggunakan Fungsi Excel melalui .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;
    }
}

Sokongan untuk Tatasusunan Dinamik

Sumber terbuka .NET API Excel-DNA juga menyokong penggunaan tatasusunan dinamik di dalam excel. Apabila anda menulis formula tatasusunan dinamik, ia menentukan sama ada formula itu berpotensi untuk mengembalikan berbilang nilai.

Cara Membuat Tatasusunan & Auto Ubah Saiz Hasil melalui 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);
        }
    }

Sokongan Pengelogan Diagnostik

API ExcelDNA membenarkan pembangun .NET menggunakan pengelogan diagnostik semasa bekerja dengan Excel Add-In. Excel-DNA menggunakan mekanisme .NET System.Diagnostics.Trace standard untuk pengelogan diagnostik.

Log Amaran dan Ralat dalam Add-in

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