Documentazione HotXLS

Metodo TryGetCachedFormulaValue

Legge un risultato di formula memorizzato senza valutare la formula né modificare lo stato del workbook

Il metodo è disponibile sia su IXLSWorkbook sia su TXLSXWorkbook; l'implementazione del workbook a pacchetto copre i file XLSX e ODS

Il codice indipendente dal motore può ottenere un IXLSFormulaCacheReader da uno dei due motori tramite CreateFormulaCacheReader e usare lo stesso metodo di interrogazione

Sintassi

function TryGetCachedFormulaValue(
  SheetIndex, Row, Col: Integer;
  out AInfo: TXLSFormulaCacheInfo): Boolean;

Coordinate e valore restituito

SheetIndex, Rowe Col sono in base 1

Il metodo restituisce True solo per una cella con formula il cui stato della cache è xlfcsLoaded o xlfcsCalculated

Coordinate non valide, celle assenti e celle senza formula restituiscono False con xlfcsNotFormula

Una formula senza risultato memorizzato restituisce False con xlfcsMissing; una formula in cache in precedenza la cui formula o il cui calcolo è fallito dopo una modifica restituisce False con xlfcsInvalidated

Informazioni sulla cache

The TXLSFormulaCacheInfo classifica la cache tramite due enum dichiarati in lxStandard: State is a TXLSFormulaCacheState and Kind a TXLSFormulaCacheValueKind

CampoSignificato
State (TXLSFormulaCacheState)xlfcsNotFormula, xlfcsMissing, xlfcsLoaded, xlfcsCalculatedo xlfcsInvalidated
Kind (TXLSFormulaCacheValueKind)xlfcvBlank, xlfcvNumber, xlfcvDateTime, xlfcvString, xlfcvBooleano xlfcvError
ValueIl Variant in cache di proprietà quando il metodo restituisce True, altrimenti Unassigned

Risultati vuoti, stringhe vuote, booleani false, zeri numerici ed errori conservano tipi distinti e non vengono usati come proxy della presenza della cache

Le cache numeriche BIFF restano Double perché il record non ha un marcatore di tipo data; le cache di errore vengono restituite come varError

Per i workbook a pacchetto, i valori di data OOXML t="d" e ODF restituiscono varDate, OOXML t="e" restituisce varError, e un vuoto in cache ODF viene preservato con il tipo di valore void value type

Modificare una formula invalida la sua cache precedente, mentre assegnare un valore in cache e poi assegnare la sua formula registra una cache calcolata

Ogni membro di una formula condivisa conserva la propria presenza e valore in cache; un follower senza risultato memorizzato riporta xlfcsMissing invece di ereditare la cache del membro radice

Contratto di nessun calcolo

Il metodo esegue una ricerca diretta nelle celle sparse e non invoca mai il calcolatore, un callback di funzione utente, la decompilazione dei token della formula, gli aggiornamenti delle dipendenze, le scritture della cache né le modifiche dello stato delle modifiche

Usare la normale proprietà Value della cella quando è richiesto il calcolo

Durata di vita del reader

CreateFormulaCacheReader restituisce un adattatore di sola lettura supportato da un lease sulla durata di vita del workbook senza trasferire la proprietà del workbook

Dopo la distruzione del workbook, qualsiasi interrogazione tramite quell'adattatore genera EXLSFormulaCacheReaderInvalidated invece di dereferenziare lo stato del workbook rilasciato

Esempio

Reader := Workbook.CreateFormulaCacheReader;
if Reader.TryGetCachedFormulaValue(1, 4, 2, Info) then
  Memo1.Lines.Add(VarToStr(Info.Value))
else if Info.State = xlfcsMissing then
  Memo1.Lines.Add('Formula has no stored result');

Vedere anche