قم بتطبيق محرك الحساب المخصص لتوسيع محرك الحساب الافتراضي لـ Aspose.Cells

تنفيذ محرك الحساب المخصص

يحتوي Aspose.Cells على محرك حساب قوي يمكنه حساب جميع صيغ Excel Microsoft تقريبًا. على الرغم من ذلك ، فإنه يسمح لك أيضًا بتوسيع محرك الحساب الافتراضي الذي يوفر لك قدرًا أكبر من القوة والمرونة.

يتم استخدام الخصائص والفئات التالية في تنفيذ هذه الميزة.

تقوم التعليمات البرمجية التالية بتنفيذ محرك الحساب المخصص. يقوم بتنفيذ الواجهة**[AbstractCalculationEngine] (https://reference.aspose.com/cells/net/aspose.cells/abstractcalculationengine)** الذي يحتوي على**[حساب (بيانات الحساب)] (https://reference.aspose.com/cells/net/aspose.cells/abstractcalculationengine/methods/calculate)** طريقة. يتم استدعاء هذه الطريقة مقابل جميع الصيغ الخاصة بك. داخل هذه الطريقة ، نلتقط ملف**مجموع** الصيغة وتزيد قيمتها بمقدار 30. لذلك إذا كانت القيمة المحسوبة Aspose.Cells هي 20 ، فإن محركنا المخصص سيجعلها 50 بإضافة 30.

عينة البرمجة

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// Create a new class derived from AbstractCalculationEngine
class CustomEngine : AbstractCalculationEngine
{
// Override the Calculate method with custom logic
public override void Calculate(CalculationData data)
{
// Check the forumla name and change the implementation
if (data.FunctionName.ToUpper() == "TODAY")
{
// Assign the CalculationData.CalculatedValue: add one day offset for the date
data.CalculatedValue = CellsHelper.GetDoubleFromDateTime(DateTime.Today, false) + 1.0;
}
}
public override bool ProcessBuiltInFunctions { get { return true; } }
}
class ImplementCustomCalculationEngine
{
public static void Run()
{
// Create an instance of Workbook
Workbook workbook = new Workbook();
// Access first Worksheet from the collection
Worksheet sheet = workbook.Worksheets[0];
// Access Cell A1 and put a formula to sum values of B1 to B2
Cell a1 = sheet.Cells["A1"];
Style style = a1.GetStyle();
style.Number = 14;
a1.SetStyle(style);
a1.Formula = "=TODAY()";
// Calculate all formulas in the Workbook
workbook.CalculateFormula();
// The result of A1 should be 20 as per default calculation engine
Console.WriteLine("The value of A1 with default calculation engine: " + a1.StringValue);
// Create an instance of CustomEngine
CustomEngine engine = new CustomEngine();
// Create an instance of CalculationOptions
CalculationOptions opts = new CalculationOptions();
// Assign the CalculationOptions.CustomEngine property to the instance of CustomEngine
opts.CustomEngine = engine;
// Recalculate all formulas in Workbook using the custom calculation engine
workbook.CalculateFormula(opts);
// The result of A1 will be 50 as per custom calculation engine
Console.WriteLine("The value of A1 with custom calculation engine: " + a1.StringValue);
Console.WriteLine("Press any key to continue...");
Console.ReadKey();
}
}

إخراج وحدة التحكم

هنا هو إخراج وحدة التحكم من نموذج التعليمات البرمجية أعلاه.

Without Custom Engine Value of A1: 20

With Custom Engine Value of A1: 50

مقالات لها صلة