Class AbstractCalculationEngine

Class AbstractCalculationEngine

Namespace: Aspose.Cells
Assembly: Aspose.Cells.dll (25.2.0)

يمثل محرك الحساب المخصص للمستخدم لتمديد محرك الحساب الافتراضي لـ Aspose.Cells.

public abstract class AbstractCalculationEngine

الوراثة

objectAbstractCalculationEngine

الأعضاء الموروثة

object.GetType(), object.MemberwiseClone(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()

أمثلة

Workbook wb = new Workbook("custom_calc.xlsx");
CalculationOptions opts = new CalculationOptions();
opts.CustomEngine = new MyEngine();
wb.CalculateFormula(opts);

class MyEngine : AbstractCalculationEngine
{
    public override void Calculate(CalculationData data)
    {
        string funcName = data.FunctionName.ToUpper();
        if ("MYFUNC".Equals(funcName))
        {
            //قم بإجراء الحساب لـ MYFUNC هنا
            int count = data.ParamCount;
            object res = null;
            for (int i = 0; i < count; i++)
            {
                object pv = data.GetParamValue(i);
                if (pv is ReferredArea)
                {
                    ReferredArea ra = (ReferredArea)pv;
                    pv = ra.GetValue(0, 0);
                }
                //قم بمعالجة المعامل هنا
                //res = ...;
            }
            data.CalculatedValue = res;
        }
    }
}

ملاحظات

يجب على المستخدم عدم تعديل أي جزء من Workbook مباشرة في هذا التنفيذ (باستثناء النتيجة المحسوبة للدالة المخصصة، والتي يمكن تعيينها بواسطة خاصية CalculationData.CalculatedValue). خلاف ذلك، قد يحدث نتيجة غير متوقعة أو استثناء. إذا كان المستخدم يحتاج إلى تغيير بيانات أخرى غير النتيجة المحسوبة في التنفيذ لبعض الدوال المخصصة، على سبيل المثال، تغيير صيغة الخلية، النمط، … إلخ، يجب على المستخدم جمع تلك البيانات في هذا التنفيذ وتغييرها خارج نطاق حساب الصيغة.

المنشئات

AbstractCalculationEngine()

protected AbstractCalculationEngine()

الخصائص

IsParamArrayModeRequired

تشير إلى ما إذا كان هذا المحرك يحتاج إلى أن يتم حساب المعامل في وضع المصفوفة. القيمة الافتراضية هي false. إذا كانت Aspose.Cells.CalculationData.GetParamValueInArrayMode(System.Int32,System.Int32,System.Int32) مطلوبة عند حساب الدوال المخصصة ولم يقم المستخدم بتحديث التعريف لها (عن طريق Aspose.Cells.Workbook.UpdateCustomFunctionDefinition(Aspose.Cells.CustomFunctionDefinition)), يجب تعيين هذه الخاصية على true.

public virtual bool IsParamArrayModeRequired { get; }

قيمة الخاصية

bool

ملاحظات

إذا كان هذا المحرك المخصص يحتاج إلى أن يتم حساب المعامل في وضع المصفوفة، فسيكون هناك حاجة إلى المزيد من المكدسات لتخزين الشجرة للمعاملات وقد يتم استدعاء طريقة Calculate() بشكل تكراري لحساب قيمة المعامل. لأغراض الأداء، يرجى الاحتفاظ بهذه الخاصية كقيمة افتراضية (false) إذا لم يكن هناك متطلبات خاصة.

IsParamLiteralRequired

تشير إلى ما إذا كان هذا المحرك يحتاج إلى النص الحرفي للمعامل أثناء إجراء الحساب. القيمة الافتراضية هي false.

public virtual bool IsParamLiteralRequired { get; }

قيمة الخاصية

bool

ملاحظات

إذا كان هذا المحرك المخصص يحتاج إلى النص الحرفي للمعامل، فسيكون هناك حاجة إلى المزيد من المكدسات لتخزين النص الحرفي للمعاملات وقد يتم استدعاء طريقة Calculate() بشكل تكراري لحساب قيمة المعامل. بشكل عام، لا تكون النصوص الحرفية مطلوبة لحساب الصيغ ويجب الاحتفاظ بهذه الخاصية كـ false لمعظم التنفيذات للحصول على أداء أفضل.

ProcessBuiltInFunctions

ما إذا كانت الدوال المدمجة المدعومة من قبل المحرك المدمج يجب فحصها ومعالجتها بواسطة هذا التنفيذ. القيمة الافتراضية هي false.

public virtual bool ProcessBuiltInFunctions { get; }

قيمة الخاصية

bool

ملاحظات

إذا كان المستخدم يحتاج إلى تغيير منطق حساب بعض الدوال المدمجة، يجب تعيين هذه الخاصية على true. خلاف ذلك، يرجى ترك هذه الخاصية على false لأغراض الأداء.

الطرق

Calculate(CalculationData)

يحسب دالة واحدة باستخدام البيانات المعطاة.

public abstract void Calculate(CalculationData data)

المعلمات

data CalculationData

البيانات المطلوبة لحساب الدالة مثل اسم الدالة، المعاملات، … إلخ.

ملاحظات

يجب على المستخدم تعيين القيمة المحسوبة للبيانات المعطاة لجميع الدوال (بما في ذلك الدوال الأصلية في إكسل) التي يريد حسابها بنفسه في هذا التنفيذ.

ForceRecalculate(string)

ما إذا كان يجب إجبار الدالة المعطاة على إعادة الحساب دائمًا عند حساب الصيغ المشتركة.

public virtual bool ForceRecalculate(string functionName)

المعلمات

functionName string

اسم الدالة. بشكل عام، هو اسم الدالة المخصصة. إذا كانت Aspose.Cells.AbstractCalculationEngine.ProcessBuiltInFunctions صحيحة، فسيتم أيضًا فحص الدوال المدمجة هنا.

القيمة المعادة

bool

true إذا كانت الدالة المحددة تحتاج إلى إعادة الحساب دائمًا.

ملاحظات

بالنسبة للصيغ المشتركة، تشترك عدة خلايا في نفس الدالة. إذا كانت معلمات الدالة تظل كما هي لتلك الخلايا أيضًا، فعادةً ما تحتاج هذه الدالة إلى أن تُحسب مرة واحدة فقط. لذا، لأغراض الأداء، نقوم فقط بحساب هذا النوع من الدوال مرة واحدة أيضًا (يتم استدعاء Aspose.Cells.AbstractCalculationEngine.Calculate(Aspose.Cells.CalculationData) مرة واحدة فقط، بدلاً من استدعائها بشكل متكرر لكل خلية). ومع ذلك، بالنسبة لتنفيذ المستخدم، قد تحتاج الدالة، خاصةً الدالة المخصصة، إلى أن تُحسب بشكل مختلف للخلايا المختلفة. إذا كان الأمر كذلك، يحتاج المستخدم إلى تجاوز هذه الطريقة لجعلها تعيد true للدالة. وبالنسبة لـ Aspose.Cells.AbstractCalculationEngine.Calculate(Aspose.Cells.CalculationData)، قد تكون القيمة المعطاة لـ Aspose.Cells.CalculationData.CalculatedValue قد تم تهيئتها بالقيمة المخزنة للحساب السابق.

SkipCalculation()

protected void SkipCalculation()
 عربي