Class AbstractCalculationEngine
Namespace: Aspose.Cells
Assembly: Aspose.Cells.dll (25.2.0)
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
Héritage
object ← AbstractCalculationEngine
Membres hérités
object.GetType(), object.MemberwiseClone(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()
Exemples
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))
{
//effectuer 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;
}
}
}
Remarques
L’utilisateur ne doit pas modifier une partie du Workbook directement dans cette implémentation (sauf le 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 changer d’autres données que le résultat calculé dans l’implémentation pour certaines fonctions personnalisées, par exemple, changer la formule de la cellule, le style, …etc., l’utilisateur doit rassembler ces données dans cette implémentation et les modifier en dehors du cadre du calcul de formule.
Constructeurs
AbstractCalculationEngine()
protected AbstractCalculationEngine()
Propriétés
IsParamArrayModeRequired
Indique si ce moteur nécessite que le paramètre soit calculé en mode tableau. La valeur par défaut est false. Si Aspose.Cells.CalculationData.GetParamValueInArrayMode(System.Int32,System.Int32,System.Int32) est requis lors du calcul des fonctions personnalisées et que l’utilisateur n’a pas mis à jour la définition pour elles (par Aspose.Cells.Workbook.UpdateCustomFunctionDefinition(Aspose.Cells.CustomFunctionDefinition)), cette propriété doit être définie sur true.
public virtual bool IsParamArrayModeRequired { get; }
Valeur de la propriété
Remarques
Si ce moteur de calcul personnalisé nécessite que le paramètre soit calculé en mode tableau, plus de piles seront nécessaires pour mettre en cache l’arbre pour les paramètres et la méthode Calculate() peut être appelée récursivement pour calculer la valeur du paramètre. Pour des raisons de performance, veuillez garder cette propriété à la valeur par défaut (false) s’il n’y a pas d’exigence particulière.
IsParamLiteralRequired
Indique si ce moteur a besoin du texte littéral du paramètre lors du calcul. La valeur par défaut est false.
public virtual bool IsParamLiteralRequired { get; }
Valeur de la propriété
Remarques
Si ce moteur de calcul personnalisé a besoin du texte littéral du paramètre, plus de piles seront nécessaires pour mettre en cache le texte littéral pour les paramètres et la méthode Calculate() peut être appelée récursivement pour calculer la valeur du paramètre. En général, le texte littéral n’est pas nécessaire pour le calcul des formules et cette propriété devrait être maintenue à false pour la plupart des implémentations afin d’obtenir de meilleures performances.
ProcessBuiltInFunctions
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.
public virtual bool ProcessBuiltInFunctions { get; }
Valeur de la propriété
Remarques
Si l’utilisateur a besoin de modifier la logique de calcul de certaines fonctions intégrées, cette propriété doit être définie sur true. Sinon, veuillez laisser cette propriété sur false pour des raisons de performance.
Méthodes
Calculate(CalculationData)
Calcule une fonction avec les données fournies.
public abstract void Calculate(CalculationData data)
Paramètres
data
CalculationData
les données requises pour calculer la fonction, telles que le nom de la fonction, les paramètres, …etc.
Remarques
L’utilisateur doit définir la valeur calculée pour les données fournies pour toutes les fonctions (y compris les fonctions natives d’excel) qu’il souhaite calculer lui-même dans cette implémentation.
ForceRecalculate(string)
Indique si la fonction donnée doit toujours être recalculée lors du calcul des formules partagées.
public virtual bool ForceRecalculate(string functionName)
Paramètres
functionName
string
nom de la fonction. En général, c’est le nom de la fonction personnalisée. Si Aspose.Cells.AbstractCalculationEngine.ProcessBuiltInFunctions est true, alors les fonctions intégrées seront également vérifiées ici.
Retourne
true si la fonction spécifiée doit toujours être recalculée.
Remarques
Pour les formules partagées, plusieurs cellules partagent la même fonction. Si les paramètres de la fonction restent les mêmes pour ces cellules également, alors généralement cette fonction doit être calculée une seule fois. Ainsi, pour des raisons de performance, nous ne calculons cette fonction qu’une seule fois également (Aspose.Cells.AbstractCalculationEngine.Calculate(Aspose.Cells.CalculationData) n’est appelé qu’une seule fois, au lieu d’être appelé plusieurs fois pour chaque cellule). Cependant, pour l’implémentation personnalisée de l’utilisateur, il se peut que la fonction, en particulier la fonction personnalisée, doit être calculée différemment pour différentes cellules. Si c’est le cas, l’utilisateur doit remplacer cette méthode pour la faire retourner true pour la fonction. Et pour Aspose.Cells.AbstractCalculationEngine.Calculate(Aspose.Cells.CalculationData), la valeur donnée Aspose.Cells.CalculationData.CalculatedValue peut avoir été initialisée avec la valeur mise en cache du calcul précédent.
SkipCalculation()
protected void SkipCalculation()