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
| Felt | Betydning |
|---|---|
State | xlfcsNotFormula, xlfcsMissing, xlfcsLoaded, xlfcsCalculated eller xlfcsInvalidated |
Kind | xlfcvBlank, xlfcvNumber, xlfcvDateTime, xlfcvString, xlfcvBoolean eller xlfcvError |
Value | Den 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');