AbstractCalculationEngine

AbstractCalculationEngine class

Representa el motor de cálculo personalizado del usuario para ampliar el motor de cálculo predeterminado de Aspose.Cells.

public abstract class AbstractCalculationEngine

Propiedades

NombreDescripción
virtual IsParamLiteralRequired { get; }Indica si este motor necesita el texto literal del parámetro mientras realiza el cálculo. El valor predeterminado es falso.
virtual ProcessBuiltInFunctions { get; }Si esta implementación debe verificar y procesar las funciones integradas que han sido compatibles con el motor integrado. El valor predeterminado es falso. Si el usuario necesita cambiar la lógica de cálculo de algunas funciones integradas, esta propiedad debe ser establecer como verdadero.

Métodos

NombreDescripción
abstract Calculate(CalculationData)Calcula una función con los datos dados.

Observaciones

El usuario no debe modificar ninguna parte del libro de trabajo directamente en esta implementación (excepto el resultado calculado de la función personalizada, que puede configurarse mediante la propiedad CalculationData.CalculatedValue). De lo contrario, se puede generar un resultado inesperado o una excepción. Si el usuario necesita otros datos que no sean el resultado calculado en la implementación de algunas funciones personalizadas, por ejemplo, cambiar la fórmula de la celda, el estilo, etc., el usuario debe recopilar esos datos en esta implementación y cambiarlos fuera del alcance del cálculo de la fórmula.

Ejemplos

[C#]
public class MyEngine : AbstractCalculationEngine
{
    public override void Calculate(CalculationData data)
    {
        string funcName = data.FunctionName.ToUpper();
        if ("MYFUNC".Equals(funcName))
        {
            //hacer calculo para MYFUNC aqui
            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);
                }
                //procesar el parámetro aquí
                // res = ...;
            }
            data.CalculatedValue = res;
        }
    }
}

Ver también