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