Class AbstractCalculationEngine

Class AbstractCalculationEngine

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

Rappresenta il motore di calcolo personalizzato dell’utente per estendere il motore di calcolo predefinito di Aspose.Cells.

public abstract class AbstractCalculationEngine

Ereditarietà

objectAbstractCalculationEngine

Membri Ereditati

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

Esempi

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))
        {
            //eseguire il calcolo per MYFUNC qui
            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);
                }
                //elaborare il parametro qui
                //res = ...;
            }
            data.CalculatedValue = res;
        }
    }
}

Osservazioni

L’utente non dovrebbe modificare alcuna parte del Workbook direttamente in questa implementazione (eccetto il risultato calcolato della funzione personalizzata, che può essere impostato tramite la proprietà CalculationData.CalculatedValue). Altrimenti, possono verificarsi risultati imprevisti o eccezioni. Se l’utente ha bisogno di modificare altri dati oltre al risultato calcolato nell’implementazione per alcune funzioni personalizzate, ad esempio, modificare la formula della cella, lo stile, …ecc., l’utente dovrebbe raccogliere quei dati in questa implementazione e modificarli al di fuori dell’ambito del calcolo della formula.

Costruttori

AbstractCalculationEngine()

protected AbstractCalculationEngine()

Proprietà

IsParamArrayModeRequired

Indica se questo motore ha bisogno che il parametro venga calcolato in modalità array. Il valore predefinito è falso. Se Aspose.Cells.CalculationData.GetParamValueInArrayMode(System.Int32,System.Int32,System.Int32) è necessario quando si calcolano funzioni personalizzate e l’utente non ha aggiornato la definizione per esse (tramite Aspose.Cells.Workbook.UpdateCustomFunctionDefinition(Aspose.Cells.CustomFunctionDefinition)), questa proprietà deve essere impostata su true.

public virtual bool IsParamArrayModeRequired { get; }

Valore della Proprietà

bool

Osservazioni

Se questo motore di calcolo personalizzato ha bisogno che il parametro venga calcolato in modalità array, saranno necessari più stack per memorizzare nella cache l’albero per i parametri e il metodo Calculate() potrebbe essere chiamato ricorsivamente per calcolare il valore del parametro. Per considerazioni di prestazioni, si prega di mantenere questa proprietà al valore predefinito (falso) se non ci sono requisiti speciali.

IsParamLiteralRequired

Indica se questo motore ha bisogno del testo letterale del parametro durante il calcolo. Il valore predefinito è falso.

public virtual bool IsParamLiteralRequired { get; }

Valore della Proprietà

bool

Osservazioni

Se questo motore di calcolo personalizzato ha bisogno del testo letterale del parametro, saranno necessari più stack per memorizzare nella cache il testo letterale per i parametri e il metodo Calculate() potrebbe essere chiamato ricorsivamente per calcolare il valore del parametro. Generalmente, il testo letterale non è necessario per calcolare le formule e questa proprietà dovrebbe essere mantenuta su false per la maggior parte delle implementazioni per ottenere migliori prestazioni.

ProcessBuiltInFunctions

Indica se le funzioni integrate già supportate dal motore integrato dovrebbero essere controllate e elaborate da questa implementazione. Il valore predefinito è falso.

public virtual bool ProcessBuiltInFunctions { get; }

Valore della Proprietà

bool

Osservazioni

Se l’utente ha bisogno di modificare la logica di calcolo di alcune funzioni integrate, questa proprietà deve essere impostata su true. Altrimenti, si prega di mantenere questa proprietà su false per considerazioni di prestazioni.

Metodi

Calculate(CalculationData)

Calcola una funzione con i dati forniti.

public abstract void Calculate(CalculationData data)

Parametri

data CalculationData

i dati richiesti per calcolare la funzione come nome della funzione, parametri, …ecc.

Osservazioni

L’utente dovrebbe impostare il valore calcolato per i dati forniti per tutte le funzioni (comprese le funzioni native di Excel) che desidera calcolare da solo in questa implementazione.

ForceRecalculate(string)

Indica se forzare una data funzione a essere ricalcolata sempre quando si calcolano formule condivise.

public virtual bool ForceRecalculate(string functionName)

Parametri

functionName string

nome della funzione. Generalmente è il nome della funzione personalizzata. Se Aspose.Cells.AbstractCalculationEngine.ProcessBuiltInFunctions è true, anche le funzioni integrate verranno controllate qui.

Restituisce

bool

true se la funzione specificata deve essere ricalcolata sempre.

Osservazioni

Per le formule condivise, più celle condividono la stessa funzione. Se i parametri della funzione rimangono uguali anche per quelle celle, generalmente questa funzione deve essere calcolata solo una volta. Quindi, per considerazioni di prestazioni, calcoliamo solo una volta anche questo tipo di funzione (Aspose.Cells.AbstractCalculationEngine.Calculate(Aspose.Cells.CalculationData) viene chiamato solo una volta, invece di essere chiamato ripetutamente per ogni cella). Tuttavia, per l’implementazione personalizzata dell’utente, potrebbe essere che la funzione, in particolare la funzione personalizzata, deve essere calcolata in modo diverso per celle diverse. Se così fosse, l’utente deve sovrascrivere questo metodo per farlo restituire true per la funzione. E per Aspose.Cells.AbstractCalculationEngine.Calculate(Aspose.Cells.CalculationData), il valore Aspose.Cells.CalculationData.CalculatedValue fornito potrebbe essere stato inizializzato con il valore memorizzato nella cache del calcolo precedente.

SkipCalculation()

protected void SkipCalculation()
 Italiano