Class AbstractCalculationEngine

Class AbstractCalculationEngine

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

Reprezentuje uživatelský vlastní výpočetní engine pro rozšíření výchozího výpočetního enginu Aspose.Cells.

public abstract class AbstractCalculationEngine

Dědičnost

objectAbstractCalculationEngine

Děděné členy

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

Příklady

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))
        {
            //provedení výpočtu pro MYFUNC zde
            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);
                }
                //zpracování parametru zde
                //res = ...;
            }
            data.CalculatedValue = res;
        }
    }
}

Poznámky

Uživatel by neměl přímo měnit žádnou část Workbooku v této implementaci (kromě vypočítaného výsledku vlastní funkce, který lze nastavit pomocí vlastnosti CalculationData.CalculatedValue). Jinak může dojít k neočekávanému výsledku nebo výjimce. Pokud uživatel potřebuje změnit jiná data než vypočítaný výsledek v implementaci pro některé vlastní funkce, například změnit vzorec buňky, styl, …atd., měl by uživatel shromáždit tato data v této implementaci a změnit je mimo rozsah výpočtu vzorce.

Konstruktor

AbstractCalculationEngine()

protected AbstractCalculationEngine()

Vlastnosti

IsParamArrayModeRequired

Indikuje, zda tento engine potřebuje, aby byl parametr vypočítán v režimu pole. Výchozí hodnota je false. Pokud je Aspose.Cells.CalculationData.GetParamValueInArrayMode(System.Int32,System.Int32,System.Int32) vyžadován při výpočtu vlastních funkcí a uživatel neaktualizoval definici pro ně (pomocí Aspose.Cells.Workbook.UpdateCustomFunctionDefinition(Aspose.Cells.CustomFunctionDefinition)), tato vlastnost musí být nastavena na true.

public virtual bool IsParamArrayModeRequired { get; }

Hodnota vlastnosti

bool

Poznámky

Pokud tento vlastní výpočetní engine potřebuje, aby byl parametr vypočítán v režimu pole, bude vyžadováno více zásobníků pro ukládání stromu pro parametry a metoda Calculate() může být volána rekurzivně pro výpočet hodnoty parametru. Z hlediska výkonu, prosím, uchovávejte tuto vlastnost jako výchozí hodnotu (false) pokud neexistují žádné zvláštní požadavky.

IsParamLiteralRequired

Indikuje, zda tento engine potřebuje doslovný text parametru při provádění výpočtu. Výchozí hodnota je false.

public virtual bool IsParamLiteralRequired { get; }

Hodnota vlastnosti

bool

Poznámky

Pokud tento vlastní výpočetní engine potřebuje doslovný text parametru, bude vyžadováno více zásobníků pro ukládání doslovného textu pro parametry a metoda Calculate() může být volána rekurzivně pro výpočet hodnoty parametru. Obecně není doslovný text potřebný pro výpočet vzorců a tuto vlastnost by měl většina implementací udržovat jako false pro lepší výkon.

ProcessBuiltInFunctions

Zda by měly být vestavěné funkce, které byly podporovány vestavěným enginem, zkontrolovány a zpracovány touto implementací. Výchozí hodnota je false.

public virtual bool ProcessBuiltInFunctions { get; }

Hodnota vlastnosti

bool

Poznámky

Pokud uživatel potřebuje změnit logiku výpočtu některých vestavěných funkcí, tato vlastnost by měla být nastavena na true. Jinak prosím nechte tuto vlastnost jako false z hlediska výkonu.

Metody

Calculate(CalculationData)

Vypočítá jednu funkci s danými daty.

public abstract void Calculate(CalculationData data)

Parametry

data CalculationData

požadovaná data pro výpočet funkce, jako je název funkce, parametry, …atd.

Poznámky

Uživatel by měl nastavit vypočítanou hodnotu pro daná data pro všechny funkce (včetně nativních funkcí Excel), které chce vypočítat sám v této implementaci.

ForceRecalculate(string)

Zda vždy vynutit znovu výpočet dané funkce při výpočtu sdílených vzorců.

public virtual bool ForceRecalculate(string functionName)

Parametry

functionName string

název funkce. Obecně je to název vlastní funkce. Pokud je Aspose.Cells.AbstractCalculationEngine.ProcessBuiltInFunctions true, pak budou vestavěné funkce také zkontrolovány zde.

Návratová hodnota

bool

true, pokud je třeba danou funkci vždy znovu vypočítat.

Poznámky

Pro sdílené vzorce sdílí více buněk stejnou funkci. Pokud parametry funkce zůstávají stejné i pro tyto buňky, pak obecně je třeba tuto funkci vypočítat pouze jednou. Z hlediska výkonu proto vypočítáme takovou funkci pouze jednou (Aspose.Cells.AbstractCalculationEngine.Calculate(Aspose.Cells.CalculationData) je volána pouze jednou, místo aby byla volána opakovaně pro každou buňku). Nicméně pro uživatelskou vlastní implementaci může být funkce, zejména vlastní funkce, potřebná k výpočtu odlišně pro různé buňky. Pokud ano, uživatel musí tuto metodu přepsat, aby vrátila true pro funkci. A pro Aspose.Cells.AbstractCalculationEngine.Calculate(Aspose.Cells.CalculationData) může být daná Aspose.Cells.CalculationData.CalculatedValue již inicializována s uloženou hodnotou předchozího výpočtu.

SkipCalculation()

protected void SkipCalculation()
 Čeština