Direkt beräkning av anpassad funktion utan att skriva den i en kalkylblad
Direkt beräkning av anpassad funktion utan att skriva den i en kalkylblad
Den här artikeln förklarar hur du kan direkt beräkna dina anpassade funktioner utan först att skriva dem i en arbetsbok. Använd Worksheet.CalculateFormula(string formula, CalculationOptions opts)-metoden för detta ändamål.
Se följande exempelkod som illustrerar användningen av denna metod. Vi har använt en anpassad funktion som heter MyCompany.CustomFunction() och beräknar dess värde som “Aspose.Cells.” på egen hand och sedan konkateneras detta värde automatiskt med värdet för cell A1, vilket är “Välkommen till " av beräkningsmotorn och det slutliga beräknade värdet returneras som “Välkommen till Aspose.Cells.”. Som du kan se i koden har vi inte skrivit vår anpassade funktion någonstans i en arbetsbok och den beräknas direkt av vår egen anpassade logik.
Programmeringsexempel
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
class ICustomEngine : AbstractCalculationEngine | |
{ | |
// Override the Calculate method with custom logic | |
public override void Calculate(CalculationData data) | |
{ | |
// Check the forumla name and calculate it yourself | |
if (data.FunctionName == "MyCompany.CustomFunction") | |
{ | |
// This is our calculated value | |
data.CalculatedValue = "Aspose.Cells."; | |
} | |
} | |
} | |
class ImplementDirectCalculationOfCustomFunction | |
{ | |
public static void Run() | |
{ | |
// Create a workbook | |
Workbook wb = new Workbook(); | |
// Accesss first worksheet | |
Worksheet ws = wb.Worksheets[0]; | |
// Add some text in cell A1 | |
ws.Cells["A1"].PutValue("Welcome to "); | |
// Create a calculation options with custom engine | |
CalculationOptions opts = new CalculationOptions(); | |
opts.CustomEngine = new ICustomEngine(); | |
// This line shows how you can call your own custom function without | |
// a need to write it in any worksheet cell | |
// After the execution of this line, it will return | |
// Welcome to Aspose.Cells. | |
object ret = ws.CalculateFormula("=A1 & MyCompany.CustomFunction()", opts); | |
// Print the calculated value on Console | |
Console.WriteLine("Calculated Value: " + ret); | |
} | |
} |
Konsoloutput
Nedan är konsol utmatningen av ovanstående provkod.
Calculated Value: Welcome to Aspose.Cells.