HotXLS-dokumentation

TryGetCachedFormulaValue metode

Læser et gemt formelresultat uden at evaluere formlen eller ændre projektmappens tilstand

Metoden er tilgængelig på både IXLSWorkbook og TXLSXWorkbook; pakkeprojektmappens implementering dækker XLSX- og ODS-filer

Motornøutral kode kan hente en IXLSFormulaCacheReader fra begge motorer via CreateFormulaCacheReader og bruge den samme forespørgselsmetode

Syntaks

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

Koordinater og returværdi

SheetIndex, Row og Col er 1-baserede

Metoden returnerer True kun for en formelcelle, hvis cachetilstand er xlfcsLoaded eller xlfcsCalculated

Ugyldige koordinater, fraværende celler og ikke-formelceller returnerer False med xlfcsNotFormula

En formel uden gemt resultat returnerer False med xlfcsMissing; en tidligere cachet formel, hvis formel eller beregning fejlede efter mutation, returnerer False med xlfcsInvalidated

Cache-oplysninger

FeltBetydning
StatexlfcsNotFormula, xlfcsMissing, xlfcsLoaded, xlfcsCalculated eller xlfcsInvalidated
KindxlfcvBlank, xlfcvNumber, xlfcvDateTime, xlfcvString, xlfcvBoolean eller xlfcvError
ValueDen ejede cachede Variant, når metoden returnerer True, ellers Unassigned

Tomme resultater, tomme strenge, boolesk false, numerisk nul og fejl bevarer forskellige arter og bruges ikke som proxyer for cache-tilstedeværelse

BIFF'ens numeriske caches forbliver Double, fordi posten ikke har en datotypemarkør; fejl-caches returneres som varError

For pakkeprojektmapper returnerer OOXML t="d"- og ODF-datoværdier varDate, OOXML t="e" returnerer varError, og en ODF-cachet tom celle bevares med værditypen void

Ændring af en formel ugyldiggør dens tidligere cache, mens tildeling af en cachet værdi og derefter dens formel registrerer en beregnet cache

Hvert delt-formel-medlem fastholder sin egen cache-tilstedeværelse og værdi; et følgemedlem uden gemt resultat rapporterer xlfcsMissing i stedet for at arve rodmedlemmets cache

Kontrakt om ingen beregning

Metoden udfører et direkte opslag i sparsomme celler og påkalder aldrig beregningsmotoren, et brugerfunktions-callback, dekompilering af formeltokens, afhængighedsopdateringer, cache-skrivninger eller ændringer af dirty-tilstanden

Brug cellens normale Value-egenskab, når beregning er påkrævet

Læserens levetid

CreateFormulaCacheReader returnerer en skrivebeskyttet adapter understøttet af en lease på projektmappens levetid uden at overføre ejerskabet af projektmappen

Efter at projektmappen er destrueret, rejser enhver forespørgsel via den adapter EXLSFormulaCacheReaderInvalidated i stedet for at afreferere frigivet projektmappetilstand

Eksempel

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');

Se også