کتابخانه دات نت منبع باز برای پردازش صفحات گسترده اکسل
ExcelDNA به شما امکان می دهد افزونه های اکسل را با استفاده از C#، F# یا VB.NET ایجاد و استقرار دهید.
Excel-DNA یک API منبع باز برای ادغام دات نت در اکسل است. API به شما امکان می دهد توابع تعریف شده توسط کاربر (UDF) با کارایی بالا و موارد دیگر را در افزونه های بومی (xll.) خود برای اکسل ایجاد کنید. شما نیازی به نصب یا ثبت نام ندارید، کل افزونه شما می تواند در یک xll. بسته بندی شود.
Excel-DNA Runtime برای همه استفاده ها رایگان است و تحت یک مجوز منبع باز مجاز توزیع می شود که استفاده تجاری را نیز مجاز می کند. این برنامه با استفاده از دات نت توسعه یافته است و کاربران باید زمان اجرا دات نت فریم ورک را نصب کنند. کد اکسل و دات نت با استفاده از افزونه (.xll) که کد دات نت را در معرض اکسل قرار می دهد، با یکدیگر ادغام می شوند. میتوانید کد خود را در فایلهای اسکریپت مبتنی بر متن (dna.) (C#، Visual Basic، یا F#)، یا کتابخانههای .NET کامپایلشده (dll.) بنویسید.
شروع کار با Excel-DNA
روش توصیه شده برای نصب ExcelDNA از NuGet است، لطفاً برای نصب سریعتر از دستور زیر استفاده کنید.
ExcelDNA را از NuGet نصب کنید
Install-Package ExcelDna.AddIn
ایجاد توابع اکسل از طریق NET API
ExcelDNA به برنامه نویسان C# .NET این صلاحیت را می دهد که توابع اکسل را با استفاده از سی شارپ تولید کنند. همچنین می توانید از ExcelFunctionAttributes مانند Name، Description، Category، IsHidden، IsExceptionSafe و غیره استفاده کنید. ویژگی IsMacroType پارامترهایی را که Excel-DNA هنگام ثبت تابع استفاده می کند تغییر می دهد.
نحوه ایجاد و استفاده از توابع اکسل از طریق 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 نیز از استفاده از آرایه های پویا در داخل اکسل پشتیبانی می کند. وقتی فرمول آرایه پویا را می نویسید، مشخص می کند که آیا فرمول پتانسیل بازگشت چندین مقدار را دارد یا خیر.
نحوه ایجاد یک آرایه و تغییر اندازه خودکار نتیجه از طریق 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);
}
}
پشتیبانی از ثبت تشخیصی
ExcelDNA API به توسعه دهندگان دات نت اجازه می دهد تا هنگام کار با افزونه اکسل از لاگ تشخیصی استفاده کنند. 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!");