TryGetCachedFormulaValue metode
Leser et lagret formelresultat uten å evaluere formelen eller endre arbeidsboktilstanden
Metoden er tilgjengelig på både IXLSWorkbook og TXLSXWorkbook; pakkearbeidsbok-implementasjonen dekker XLSX- og ODS-filer
Motornøytral kode kan hente en IXLSFormulaCacheReader fra hver av motorene gjennom CreateFormulaCacheReader og bruke samme spørringsmetode
Syntaks
function TryGetCachedFormulaValue( SheetIndex, Row, Col: Integer; out AInfo: TXLSFormulaCacheInfo): Boolean;
Koordinater og returverdi
SheetIndex, Row og Col er énbaserte
Metoden returnerer True bare for en formelcelle hvis cachetilstand er xlfcsLoaded eller xlfcsCalculated
Ugyldige koordinater, fraværende celler og ikke-formelceller returnerer False med xlfcsNotFormula
En formel uten lagret resultat returnerer False med xlfcsMissing; en tidligere bufret formel hvis formel eller beregning mislyktes etter en endring, returnerer False med xlfcsInvalidated
Bufferinformasjon
TXLSFormulaCacheInfo-posten klassifiserer bufferen gjennom to enum deklarert i lxStandard: State er en TXLSFormulaCacheState og Kind en TXLSFormulaCacheValueKind
| Felt | Betydning |
|---|---|
State (TXLSFormulaCacheState) | xlfcsNotFormula, xlfcsMissing, xlfcsLoaded, xlfcsCalculated, or xlfcsInvalidated |
Kind (TXLSFormulaCacheValueKind) | xlfcvBlank, xlfcvNumber, xlfcvDateTime, xlfcvString, xlfcvBoolean, or xlfcvError |
Value | Den bufrede Variant-verdien som eies av koden, når metoden returnerer True, ellers Unassigned |
Tomme resultater, tomme strenger, Boolean usann, numerisk null og feil beholder sine egne typer og brukes ikke som stedfortredere for bufert tilstedeværelse
BIFF-numeriske buffere forblir Double fordi posten ikke har noen datotype-markør; feilbuffere returneres som varError
For pakkearbeidsbøker returnerer OOXML t="d" og ODS-datoer varDate, OOXML t="e" returnerer varError, og en bufret ODS-tomcelle bevares med verditypen void
Å endre en formel ugyldiggjør dens tidligere buffer, mens å tildele en bufret verdi og deretter tildele formelen dens registrerer en beregnet buffer
Hvert medlem av en delt formel beholder sin egen bufrede tilstedeværelse og verdi; en følger uten lagret resultat rapporterer xlfcsMissing i stedet for å arve rodmédlemmets buffer
Ingen-beregning-kontrakt
Metoden utfører et direkte oppslag i sparse celler og utløser aldri kalkulatoren, en tilbakekning for brukerfunksjoner, dekompilering av formeltoken, avhengighetsoppdateringer, buffer skrivinger eller endringer av skitne-tilstand
Bruk den normale Value-egenskapen til cellen når beregning er nødvendig
Leserens levetid
CreateFormulaCacheReader returnerer en skrivebeskyttet adapter bygget på en lease for arbeidsbokens levetid, uten å overføre eierskapet til arbeidsboken
Etter at arbeidsboken er ødelagt, utløser enhver spørring gjennom den adapteren EXLSFormulaCacheReaderInvalidated i stedet for å referere til frigitt arbeidsboktilstand
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');