افتح مكتبة .NET المصدر لمعالجة جداول بيانات Excel
يتيح لك ExcelDNA إنشاء ونشر وظائف Excel الإضافية باستخدام C # أو F # أو VB .NET.
Excel-DNA هو واجهة برمجة تطبيقات مفتوحة المصدر لدمج .NET في Excel. تسمح لك واجهة برمجة التطبيقات (API) بإنشاء وظائف عالية الأداء معرّفة من قبل المستخدم (UDFs) والمزيد في الوظائف الإضافية الأصلية (.xll) لبرنامج Excel. لا تحتاج إلى أي تثبيت أو تسجيل ، يمكن تجميع الوظيفة الإضافية بالكامل في ملف .xll واحد.
برنامج Excel-DNA Runtime مجاني لجميع الاستخدامات ويتم توزيعه بموجب ترخيص مفتوح المصدر يسمح أيضًا بالاستخدام التجاري. تم تطويره باستخدام .NET ويجب على المستخدمين تثبيت وقت تشغيل .NET Framework. يتكامل كل من Excel و .NET البرمجية مع بعضهما البعض باستخدام الوظيفة الإضافية (.xll) التي تعرض كود .NET إلى Excel. يمكنك كتابة التعليمات البرمجية في ملفات نصية (.dna) نصية (C # أو Visual Basic أو F #) ، أو مكتبات .NET مجمعة (.dll).
الشروع في العمل مع Excel-DNA
الطريقة الموصى بها لتثبيت ExcelDNA هي من NuGet ، يرجى استخدام الأمر التالي للتثبيت بشكل أسرع.
قم بتثبيت ExcelDNA من NuGet
Install-Package ExcelDna.AddIn
قم بإنشاء وظائف Excel عبر .NET API
يمنح ExcelDNA مبرمجي C # .NET الكفاءة لإنشاء وظائف Excel باستخدام C #. يمكنك أيضًا استخدام سمات ExcelFunctionA مثل الاسم والوصف والفئة و 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. عندما تكتب صيغة صفيف ديناميكية ، فإنها تحدد ما إذا كانت الصيغة لديها القدرة على إرجاع قيم متعددة.
كيفية عمل مصفوفة وتغيير حجم النتيجة تلقائيًا عبر 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 لمطوري .NET باستخدام التسجيل التشخيصي أثناء العمل مع برنامج Excel الإضافي. يستخدم Excel-DNA آليات .NET System.Diagnostics القياسية لتتبع التسجيل التشخيصي.
تسجيل التحذيرات والأخطاء داخل الوظيفة الإضافية
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!");