AbstractCalculationEngine

AbstractCalculationEngine class

Representerar användarens anpassade beräkningsmotor för att utöka standardberäkningsmotorn för Aspose.Cells.

public abstract class AbstractCalculationEngine

Egenskaper

namnBeskrivning
virtual IsParamLiteralRequired { get; }Indikerar om denna motor behöver den bokstavliga texten av parametern när den gör beräkningar. Standardvärdet är false.
virtual ProcessBuiltInFunctions { get; }Huruvida inbyggda funktioner som har stöds av den inbyggda motorn ska kontrolleras och bearbetas av denna implementering. Standard är falsk. Om användaren behöver ändra beräkningslogiken för vissa inbyggda funktioner, bör denna egenskap vara satt som sant.

Metoder

namnBeskrivning
abstract Calculate(CalculationData)Beräknar en funktion med givna data.

Anmärkningar

Användaren bör inte ändra någon del av arbetsboken direkt i den här implementeringen (förutom det beräknade resultatet av den anpassade funktionen, som kan ställas in av egenskapen CalculationData.CalculatedValue). Annars kan oväntade resultat eller undantag orsakas. Om användaren behöver ändra andra data än beräknade resulterar i implementeringen för vissa anpassade funktioner, till exempel, ändra cells formel, stil, … etc., användaren bör samla in dessa data i denna implementering och ändra dem utanför ramen för formelberäkningen.

Exempel

[C#]
public class MyEngine : AbstractCalculationEngine
{
    public override void Calculate(CalculationData data)
    {
        string funcName = data.FunctionName.ToUpper();
        if ("MYFUNC".Equals(funcName))
        {
            //gö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;
        }
    }
}

Se även