AbstractCalculationEngine

AbstractCalculationEngine class

Stellt das benutzerdefinierte Berechnungsmodul des Benutzers dar, um das standardmäßige Berechnungsmodul von Aspose.Cells zu erweitern.

public abstract class AbstractCalculationEngine

Eigenschaften

NameBeschreibung
virtual IsParamLiteralRequired { get; }Gibt an, ob diese Engine während der Berechnung den wörtlichen Text des Parameters benötigt. Der Standardwert ist false.
virtual ProcessBuiltInFunctions { get; }Ob eingebaute Funktionen, die von der eingebauten Engine unterstützt wurden, von dieser Implementierung überprüft und verarbeitet werden sollen. Standard ist falsch. Wenn der Benutzer die Berechnungslogik einiger eingebauter Funktionen ändern muss, sollte diese Eigenschaft sein als wahr setzen.

Methoden

NameBeschreibung
abstract Calculate(CalculationData)Berechnet eine Funktion mit gegebenen Daten.

Bemerkungen

Der Benutzer sollte keinen Teil der Arbeitsmappe direkt in dieser Implementierung ändern (mit Ausnahme des berechneten Ergebnisses der benutzerdefinierten Funktion, das durch die Eigenschaft CalculationData.CalculatedValue festgelegt werden kann). Andernfalls kann ein unerwartetes Ergebnis oder eine Ausnahme verursacht werden. Wenn der Benutzer Änderungen vornehmen muss Andere Daten als die berechneten Ergebnisse in der Implementierung für einige benutzerdefinierte Funktionen, zum Beispiel die Formel, den Stil der Zelle ändern usw., Benutzer sollten diese Daten in dieser Implementierung sammeln und sie aus dem Bereich der Formelberechnung herausnehmen.

Beispiele

[C#]
public class MyEngine : AbstractCalculationEngine
{
    public override void Calculate(CalculationData data)
    {
        string funcName = data.FunctionName.ToUpper();
        if ("MYFUNC".Equals(funcName))
        {
            // Berechnung für MYFUNC hier durchführen
            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);
                }
                //Hier den Parameter verarbeiten
                // res = ...;
            }
            data.CalculatedValue = res;
        }
    }
}

Siehe auch