Class AbstractCalculationEngine

Class AbstractCalculationEngine

Namespace: Aspose.Cells
Assembly: Aspose.Cells.dll (25.2.0)

Representerar användarens anpassade beräkningsmotor för att utöka den standardmässiga beräkningsmotorn i Aspose.Cells.

public abstract class AbstractCalculationEngine

Arv

objectAbstractCalculationEngine

Arvade Medlemmar

object.GetType(), object.MemberwiseClone(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()

Exempel

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))
        {
            //utför beräkning för MYFUNC här
            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);
                }
                //bearbeta parametern här
                //res = ...;
            }
            data.CalculatedValue = res;
        }
    }
}

Anmärkningar

Användaren bör inte ändra någon del av Workbook direkt i denna implementation (förutom det beräknade resultatet av den anpassade funktionen, som kan sättas av egenskapen CalculationData.CalculatedValue). Annars kan oväntade resultat eller undantag uppstå. Om användaren behöver ändra annan data än det beräknade resultatet i implementationen för vissa anpassade funktioner, till exempel, ändra cellens formel, stil, …etc., bör användaren samla dessa data i denna implementation och ändra dem utanför ramen för formelberäkning.

Konstruktörer

AbstractCalculationEngine()

protected AbstractCalculationEngine()

Egenskaper

IsParamArrayModeRequired

Anger om denna motor behöver att parametern beräknas i array-läge. Standardvärdet är false. Om Aspose.Cells.CalculationData.GetParamValueInArrayMode(System.Int32,System.Int32,System.Int32) krävs när man beräknar anpassade funktioner och användaren inte har uppdaterat definitionen för dem (genom Aspose.Cells.Workbook.UpdateCustomFunctionDefinition(Aspose.Cells.CustomFunctionDefinition)), måste denna egenskap sättas till true.

public virtual bool IsParamArrayModeRequired { get; }

Egenskapsvärde

bool

Anmärkningar

Om denna anpassade beräkningsmotor behöver att parametern beräknas i array-läge, kommer fler stackar att krävas för att cacha trädet för parametrar och Calculate() metoden kan kallas rekursivt för att beräkna parametrarnas värde. Av prestandaskäl, vänligen håll denna egenskap som standardvärde (false) om det inte finns något särskilt krav.

IsParamLiteralRequired

Anger om denna motor behöver den bokstavliga texten av parametern vid beräkning. Standardvärdet är false.

public virtual bool IsParamLiteralRequired { get; }

Egenskapsvärde

bool

Anmärkningar

Om denna anpassade beräkningsmotor behöver den bokstavliga texten av parametern, kommer fler stackar att krävas för att cacha den bokstavliga texten för parametrar och Calculate() metoden kan kallas rekursivt för att beräkna parametrarnas värde. Generellt behövs den bokstavliga texten inte för att beräkna formler och denna egenskap bör hållas som false för de flesta implementationer för att få bättre prestanda.

ProcessBuiltInFunctions

Om inbyggda funktioner som har stöds av den inbyggda motorn bör kontrolleras och bearbetas av denna implementation. Standard är false.

public virtual bool ProcessBuiltInFunctions { get; }

Egenskapsvärde

bool

Anmärkningar

Om användaren behöver ändra beräkningslogiken för vissa inbyggda funktioner, bör denna egenskap sättas till true. Annars, vänligen lämna denna egenskap som false av prestandaskäl.

Metoder

Calculate(CalculationData)

Beräknar en funktion med angivna data.

public abstract void Calculate(CalculationData data)

Parametrar

data CalculationData

de nödvändiga data för att beräkna funktionen såsom funktionsnamn, parametrar, …etc.

Anmärkningar

Användaren bör sätta det beräknade värdet för angivna data för alla funktioner (inklusive excel inbyggda funktioner) som han vill beräkna själv i denna implementation.

ForceRecalculate(string)

Om tvinga angiven funktion att alltid beräknas på nytt när man beräknar delade formler.

public virtual bool ForceRecalculate(string functionName)

Parametrar

functionName string

namnet på funktionen. Generellt är det namnet på den anpassade funktionen. Om Aspose.Cells.AbstractCalculationEngine.ProcessBuiltInFunctions är true, kommer även inbyggda funktioner att kontrolleras här.

Returnerar

bool

true om den angivna funktionen alltid behöver beräknas på nytt.

Anmärkningar

För delade formler delar flera celler samma funktion. Om funktionens parametrar förblir desamma för dessa celler också, så behöver denna funktion vanligtvis bara beräknas en gång. Så av prestandaskäl beräknar vi endast denna typ av funktion en gång också (Aspose.Cells.AbstractCalculationEngine.Calculate(Aspose.Cells.CalculationData) kallas endast en gång, istället för att kallas upprepade gånger för varje cell). Men för användarens anpassade implementation, kan det hända att funktionen, särskilt den anpassade funktionen, behöver beräknas olika för olika celler. Om så är fallet, behöver användaren åsidosätta denna metod för att få den att returnera true för funktionen. Och för Aspose.Cells.AbstractCalculationEngine.Calculate(Aspose.Cells.CalculationData), kan den angivna Aspose.Cells.CalculationData.CalculatedValue ha initialiserats med det cachade värdet från tidigare beräkning.

SkipCalculation()

protected void SkipCalculation()
 Svenska