ไลบรารี .NET แบบโอเพ่นซอร์สสำหรับการประมวลผลสเปรดชีต Excel  

ExcelDNA ช่วยให้คุณสร้างและปรับใช้โปรแกรมเสริมของ Excel โดยใช้ C#, F# หรือ VB .NET

Excel-DNA เป็น API แบบโอเพ่นซอร์สที่รวม .NET เข้ากับ Excel API ช่วยให้คุณสร้างฟังก์ชันที่ผู้ใช้กำหนดเอง (UDF) ประสิทธิภาพสูง และอื่นๆ ในโปรแกรมเสริม (.xll) ดั้งเดิมสำหรับ Excel คุณไม่จำเป็นต้องติดตั้งหรือลงทะเบียนใดๆ เนื่องจาก Add-in ทั้งหมดของคุณสามารถรวมเป็น .xll ไฟล์เดียวได้

รันไทม์ของ Excel-DNA นั้นฟรีสำหรับการใช้งานทั้งหมด และเผยแพร่ภายใต้ใบอนุญาตโอเพนซอร์ซที่อนุญาตซึ่งอนุญาตให้ใช้ในเชิงพาณิชย์ได้เช่นกัน ได้รับการพัฒนาโดยใช้ .NET และผู้ใช้ต้องติดตั้งรันไทม์ .NET Framework โค้ด Excel และ .NET ทำงานร่วมกันโดยใช้ Add-In (.xll) ที่แสดงโค้ด .NET ให้เป็น excel คุณสามารถเขียนโค้ดของคุณในไฟล์สคริปต์แบบข้อความ (.dna) (C#, Visual Basic หรือ F#) หรือไลบรารี .NET ที่คอมไพล์แล้ว (.dll)

Previous Next

เริ่มต้นใช้งาน Excel-DNA

วิธีที่แนะนำในการติดตั้ง ExcelDNA มาจาก NuGet โปรดใช้คำสั่งต่อไปนี้เพื่อการติดตั้งที่รวดเร็วยิ่งขึ้น

ติดตั้ง ExcelDNA จาก NuGet

 Install-Package ExcelDna.AddIn

สร้างฟังก์ชัน Excel ผ่าน .NET API

ExcelDNA ช่วยให้โปรแกรมเมอร์ C# .NET มีความสามารถในการสร้างฟังก์ชัน Excel โดยใช้ C# คุณยังสามารถใช้ ExcelFunctionAttributes เช่น ชื่อ คำอธิบาย หมวดหมู่ 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;
    }
}

รองรับ Dynamic Arrays

โอเพ่นซอร์ส .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 API ช่วยให้นักพัฒนา .NET ใช้การบันทึกการวินิจฉัยในขณะที่ทำงานกับ Add-In ของ Excel Excel-DNA ใช้กลไก .NET System.Diagnostics.Trace มาตรฐานสำหรับการบันทึกการวินิจฉัย

เข้าสู่ระบบคําเตือนและข้อผิดพลาดภายใน 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!");
 ไทย