HotXLS-dokumentation

Metoden TryGetCachedFormulaValue

Läser ett lagrat formelresultat utan att utvärdera formeln eller ändra arbetsbokens tillstånd

Metoden är tillgänglig i både IXLSWorkbook och TXLSXWorkbook; paketarbetsbokens implementering omfattar XLSX- och ODS-filer

Motorneutral kod kan hämta en IXLSFormulaCacheReader från någon av motorerna via CreateFormulaCacheReader och använda samma frågemetod

Syntax

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

Koordinater och returvärde

SheetIndex, Rowoch Col är ettbaserade

Metoden returnerar True endast för en formelcell vars cachestatus är xlfcsLoaded eller xlfcsCalculated

Ogiltiga koordinater, saknade celler och icke-formelceller returnerar False med xlfcsNotFormula

En formel utan lagrat resultat returnerar False med xlfcsMissing; en tidigare cachad formel vars formel eller beräkning misslyckades efter en mutation returnerar False med xlfcsInvalidated

Cacheinformation

The TXLSFormulaCacheInfo post klassificerar cachen via två enum som deklareras i lxStandard: State is a TXLSFormulaCacheState and Kind a TXLSFormulaCacheValueKind

FältBetydelse
State (TXLSFormulaCacheState)xlfcsNotFormula, xlfcsMissing, xlfcsLoaded, xlfcsCalculatedeller xlfcsInvalidated
Kind (TXLSFormulaCacheValueKind)xlfcvBlank, xlfcvNumber, xlfcvDateTime, xlfcvString, xlfcvBooleaneller xlfcvError
ValueDet egna cachade Variant-värdet när metoden returnerar True, annars Unassigned

Tomma resultat, tomma strängar, booleskt falskt, numerisk nolla och fel behåller distinkta typer och används inte som proxy för cacheförekomst

BIFF-numeriska cacher förblir Double eftersom posten saknar datypsmarkör; felcacher returneras som varError

För paketarbetsböcker returnerar OOXML t="d" och ODF-datumvärden varDate, OOXML t="e" returnerar varError, och en ODF-cachad tomcell bevaras med värdetypen void value type

Att ändra en formel ogiltigförklarar dess tidigare cache, medan tilldelning av ett cachat värde följt av tilldelning av dess formel registrerar en beräknad cache

Varje delad formelmedlem behåller sin egen cacheförekomst och sitt eget värde; en följarformel utan lagrat resultat rapporterar xlfcsMissing i stället för att ärva rotmedlemmens cache

Kontrakt utan beräkning

Metoden utför en direkt uppslagning i den glesa cellagringen och anropar aldrig kalkylatorn, en återkallning för användarfunktioner, dekompilering av formeltoken, beroendeuppdateringar, cacheskrivningar eller ändringar av skräpstatusen

Använd cellens normala egenskap Value när beräkning krävs

Läsarens livstid

CreateFormulaCacheReader returnerar en skrivskyddad adapter som backas upp av ett lån med arbetsbokens livstid, utan att arbetsboksägarskapet överförs

Efter att arbetsboken har förstörts utlöser varje fråga via adaptern EXLSFormulaCacheReaderInvalidated i stället för att avreferera frigjort arbetsbokstillstånd

Exempel

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 även