AbstractCalculationEngine

AbstractCalculationEngine class

Représente le moteur de calcul personnalisé de l’utilisateur pour étendre le moteur de calcul par défaut d’Aspose.Cells.

public abstract class AbstractCalculationEngine

Propriétés

NomLa description
virtual IsParamLiteralRequired { get; }Indique si ce moteur a besoin du texte littéral du paramètre lors du calcul. La valeur par défaut est false.
virtual ProcessBuiltInFunctions { get; }Indique si les fonctions intégrées qui ont été prises en charge par le moteur intégré doivent être vérifiées et traitées par cette implémentation. La valeur par défaut est false. Si l’utilisateur doit modifier la logique de calcul de certaines fonctions intégrées, cette propriété doit être définir comme vrai.

Méthodes

NomLa description
abstract Calculate(CalculationData)Calcule une fonction avec des données données.

Remarques

L’utilisateur ne doit modifier aucune partie du classeur directement dans cette implémentation (à l’exception du résultat calculé de la fonction personnalisée, qui peut être défini par la propriété CalculationData.CalculatedValue). Sinon, un résultat inattendu ou une exception peut être causé. Si l’utilisateur doit modifier d’autres données que celles calculées résultent de l’implémentation de certaines fonctions personnalisées, par exemple, modifier la formule, le style, etc. de la cellule, l’utilisateur doit rassembler ces données dans cette implémentation et les modifier hors de la portée du calcul de la formule.

Exemples

[C#]
public class MyEngine : AbstractCalculationEngine
{
    public override void Calculate(CalculationData data)
    {
        string funcName = data.FunctionName.ToUpper();
        if ("MYFUNC".Equals(funcName))
        {
            // faire le calcul pour MYFUNC ici
            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);
                }
                // traiter le paramètre ici
                //res = ...;
            }
            data.CalculatedValue = res;
        }
    }
}

Voir également