HotXLS-dokumentasjon

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

FeltBetydning
State (TXLSFormulaCacheState)xlfcsNotFormula, xlfcsMissing, xlfcsLoaded, xlfcsCalculated, or xlfcsInvalidated
Kind (TXLSFormulaCacheValueKind)xlfcvBlank, xlfcvNumber, xlfcvDateTime, xlfcvString, xlfcvBoolean, or xlfcvError
ValueDen 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');

Se også