AbstractCalculationEngine

AbstractCalculationEngine class

Представляет пользовательский механизм расчета для расширения механизма расчета по умолчанию Aspose.Cells.

public abstract class AbstractCalculationEngine

Характеристики

Имя Описание
virtual IsParamLiteralRequired { get; } Указывает, нужен ли этому движку литеральный текст параметра при выполнении вычислений. Значение по умолчанию — ложь.
virtual ProcessBuiltInFunctions { get; } Должны ли встроенные функции, которые поддерживаются встроенным движком, проверяться и обрабатываться этой реализацией. По умолчанию false. Если пользователю необходимо изменить логику расчета некоторых встроенных функций, это свойство должно быть установлено как true.

Методы

Имя Описание
abstract Calculate(CalculationData) Вычисляет одну функцию с заданными данными.

Примечания

Пользователь не должен изменять какую-либо часть рабочей книги непосредственно в этой реализации (за исключением вычисляемого результата пользовательской функции, который может быть установлен свойством CalculationData.CalculatedValue). В противном случае может быть вызван неожиданный результат или исключение. Если пользователю необходимо изменить данные, отличные от расчетных, при реализации некоторых пользовательских функций, например, изменить формулу ячейки, стиль и т. д., пользователь должен собрать эти данные в этой реализации и изменить их вне области расчета формулы.

Примеры

[C#]
public 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);
                }
                  //обрабатываем параметр здесь
                  //рез = ...;
            }
            data.CalculatedValue = res;
        }
    }
}

Смотрите также