Βιβλιοθήκη ανοιχτού κώδικα .NET για επεξεργασία υπολογιστικών φύλλων του Excel
Το ExcelDNA σάς επιτρέπει να δημιουργείτε και να αναπτύσσετε πρόσθετα Excel χρησιμοποιώντας C#, F# ή VB .NET.
Το Excel-DNA είναι ένα API ανοιχτού κώδικα για την ενσωμάτωση του .NET στο Excel. Το API σάς επιτρέπει να δημιουργείτε λειτουργίες που ορίζονται από το χρήστη (UDF) και άλλες λειτουργίες υψηλής απόδοσης στα εγγενή πρόσθετα (.xll) για το Excel. Δεν χρειάζεστε εγκατάσταση ή εγγραφή, ολόκληρο το πρόσθετο μπορεί να συσκευαστεί σε ένα μόνο .xll.
Ο χρόνος εκτέλεσης του Excel-DNA είναι δωρεάν για κάθε χρήση και διανέμεται υπό μια επιτρεπτή άδεια ανοιχτού κώδικα που επιτρέπει επίσης εμπορική χρήση. Αναπτύχθηκε με χρήση .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#. Μπορείτε επίσης να χρησιμοποιήσετε 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;
}
}
Υποστήριξη για δυναμικούς πίνακες
Το ανοιχτού κώδικα .NET API Excel-DNA υποστηρίζει επίσης τη χρήση δυναμικών πινάκων στο excel. Όταν γράφετε έναν τύπο δυναμικού πίνακα, καθορίζει εάν ο τύπος έχει τη δυνατότητα να επιστρέψει πολλές τιμές.
Πώς να κάνετε ένα Array & Auto Αποτέλεσμα μέσω 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);
}
}
Διαγνωστική Υποστήριξη Logging
Το ExcelDNA API επιτρέπει στους προγραμματιστές .NET να χρησιμοποιούν διαγνωστική καταγραφή ενώ εργάζονται με το πρόσθετο 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!");