এক্সেল স্প্রেডশীট প্রক্রিয়াকরণের জন্য ওপেন সোর্স .NET লাইব্রেরি  

ExcelDNA আপনাকে C#, F# বা VB .NET ব্যবহার করে এক্সেল অ্যাড-ইন তৈরি ও স্থাপন করতে দেয়।

এক্সেল-ডিএনএ হল একটি ওপেন সোর্স এপিআই যা .NET কে এক্সেলে একীভূত করতে পারে। API আপনাকে এক্সেলের জন্য আপনার নেটিভ (.xll) অ্যাড-ইনগুলিতে উচ্চ-পারফরম্যান্স ব্যবহারকারী-সংজ্ঞায়িত ফাংশন (UDFs) এবং আরও অনেক কিছু তৈরি করতে দেয়। আপনার কোনো ইনস্টলেশন বা রেজিস্ট্রেশনের প্রয়োজন নেই, আপনার সম্পূর্ণ অ্যাড-ইন একটি একক .xll-এ প্যাক করা যেতে পারে।

এক্সেল-ডিএনএ রানটাইম সব ব্যবহারের জন্য বিনামূল্যে এবং একটি অনুমোদিত ওপেন-সোর্স লাইসেন্সের অধীনে বিতরণ করা হয় যা বাণিজ্যিক ব্যবহারের অনুমতি দেয়। এটি .NET ব্যবহার করে তৈরি করা হয়েছে এবং ব্যবহারকারীদের .NET ফ্রেমওয়ার্ক রানটাইম ইনস্টল করতে হবে। এক্সেল এবং .NET কোড অ্যাড-ইন (.xll) ব্যবহার করে একে অপরের সাথে একীভূত হয় যা .NET কোডকে এক্সেলে প্রকাশ করে। আপনি আপনার কোডটি টেক্সট-ভিত্তিক (.dna) স্ক্রিপ্ট ফাইলে (C#, ভিজ্যুয়াল বেসিক, বা F#), অথবা কম্পাইল করা .NET লাইব্রেরিতে (.dll) লিখতে পারেন।

Previous Next

এক্সেল-ডিএনএ দিয়ে শুরু করা

ExcelDNA ইনস্টল করার প্রস্তাবিত উপায় হল NuGet থেকে, অনুগ্রহ করে দ্রুত ইনস্টলেশনের জন্য নিম্নলিখিত কমান্ডটি ব্যবহার করুন।

NuGet থেকে ExcelDNA ইনস্টল করুন

 Install-Package ExcelDna.AddIn

.NET API এর মাধ্যমে এক্সেল ফাংশন তৈরি করুন

ExcelDNA C# .NET প্রোগ্রামারদের C# ব্যবহার করে এক্সেল ফাংশন তৈরি করার দক্ষতা দেয়। এছাড়াও আপনি ExcelFunctionAttributes যেমন Name, Description, Category, IsHidden, IsExceptionSafe, এবং আরও অনেক কিছু ব্যবহার করতে পারেন। IsMacroType বৈশিষ্ট্য এক্সেল-ডিএনএ ফাংশন নিবন্ধন করার সময় ব্যবহার করা প্যারামিটার পরিবর্তন করে।

কিভাবে .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 এক্সেল-ডিএনএ এক্সেলের ভিতরে ডায়নামিক অ্যারেগুলির ব্যবহারকেও সমর্থন করে। আপনি যখন একটি ডায়নামিক অ্যারে সূত্র লেখেন, তখন এটি নির্ধারণ করে যে সূত্রটিতে একাধিক মান ফেরত দেওয়ার সম্ভাবনা আছে কিনা।

কিভাবে একটি অ্যারে তৈরি করবেন এবং 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 .NET ডেভেলপারদের এক্সেল অ্যাড-ইন এর সাথে কাজ করার সময় ডায়াগনস্টিক লগিং ব্যবহার করার অনুমতি দেয়। এক্সেল-ডিএনএ ডায়াগনস্টিক লগিংয়ের জন্য স্ট্যান্ডার্ড .NET সিস্টেম.ডায়াগনস্টিকস.ট্রেস মেকানিজম ব্যবহার করে।

অ্যাড-ইন এর ভিতরে লগ সতর্কতা এবং ত্রুটি

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!");
 বাংলা