Excel Elektronik Tablolarını İşleme için Açık Kaynak .NET Kitaplığı
ExcelDNA, C#, F# veya VB .NET kullanarak Excel Eklentileri oluşturmanıza ve dağıtmanıza olanak tanır.
Excel-DNA, .NET'i Excel'e entegre etmek için açık kaynaklı bir API'dir. API, Excel için yerel (.xll) eklentilerinizde yüksek performanslı kullanıcı tanımlı işlevler (UDF'ler) ve daha fazlasını oluşturmanıza olanak tanır. Herhangi bir kuruluma veya kayda ihtiyacınız yoktur, tüm eklentiniz tek bir .xll dosyasında toplanabilir.
Excel-DNA Runtime tüm kullanımlar için ücretsizdir ve ticari kullanıma da izin veren izin verilen bir açık kaynak lisansı altında dağıtılır. .NET kullanılarak geliştirilmiştir ve kullanıcıların .NET Framework çalışma zamanını yüklemeleri gerekir. Excel ve .NET kodu, .NET kodunu excel'e sunan Eklentiyi (.xll) kullanarak birbirleriyle bütünleşir. Kodunuzu metin tabanlı (.dna) komut dosyalarına (C#, Visual Basic veya F#) veya derlenmiş .NET kitaplıklarına (.dll) yazabilirsiniz.
Excel-DNA'ya Başlarken
ExcelDNA'yı kurmanın önerilen yolu NuGet'tendir, Daha hızlı kurulum için lütfen aşağıdaki komutu kullanın.
NuGet'ten ExcelDNA'yı yükleyin
Install-Package ExcelDna.AddIn
.NET API ile Excel İşlevleri Oluşturun
ExcelDNA, C# .NET programcılarına C# kullanarak Excel işlevleri oluşturma yetkinliği verir. Ad, Açıklama, Kategori, IsHidden, IsExceptionSafe ve daha fazlası gibi ExcelFunctionAttributes öğesini de kullanabilirsiniz. IsMacroType özniteliği, işlevi kaydederken Excel-DNA'nın kullandığı parametreleri değiştirir.
Nasıl Oluşturulur ve Excel işlevleri kullanın .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;
}
}
Dinamik Diziler için Destek
Açık kaynak .NET API Excel-DNA, excel içindeki dinamik dizilerin kullanımını da destekler. Dinamik dizi formülü yazdığınızda, formülün birden çok değer döndürme potansiyeline sahip olup olmadığını belirler.
Bir Dizi & Auto Sonuç C# API aracılığıyla nasıl yapılır
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);
}
}
Tanı Logging Desteği
ExcelDNA API, .NET geliştiricilerinin Excel Eklentisi ile çalışırken tanılama günlüğünü kullanmasına olanak tanır. Excel-DNA, tanılama günlüğü için standart .NET System.Diagnostics.Trace mekanizmalarını kullanır.
Log Uyarılar ve Ekle-in içinde Hatalar
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!");