TryGetCachedFormulaValue metódus
Beolvassa a tárolt képleteredményt a képlet kiértékelése és a munkafüzet állapotának módosítása nélkül
A metódus az IXLSWorkbook és a TXLSXWorkbook esetében egyaránt elérhető; a csomag-alapú munkafüzet implementációja az XLSX és ODS fájlokat fedi le
Az engintől független kód IXLSFormulaCacheReader-t szerezhet mindkét engintől a CreateFormulaCacheReader segítségével, és ugyanazt a lekérdezési metódust használhatja
Szintaxis
function TryGetCachedFormulaValue( SheetIndex, Row, Col: Integer; out AInfo: TXLSFormulaCacheInfo): Boolean;
Koordináták és visszatérési érték
A SheetIndex, Row és Col 1-alapú
A metódus csak olyan képletcellára ad True értéket, amelynek gyorsítótár-állapota xlfcsLoaded vagy xlfcsCalculated
Az érvénytelen koordináták, a hiányzó cellák és a nem képletcellák False értéket adnak xlfcsNotFormula állapottal
Egy tárolt eredmény nélküli képlet False értéket ad xlfcsMissing állapottal; egy korábban gyorsítótárazott képlet, amelynek képlete vagy számítása mutáció után meghiúsult, False értéket ad xlfcsInvalidated állapottal
Gyorsítótár-információk
A TXLSFormulaCacheInfo rekord két, a lxStandard egységben deklarált enummal sorolja be a gyorsítótárat: a State egy TXLSFormulaCacheState, a Kind pedig egy TXLSFormulaCacheValueKind
| Mező | Jelentés |
|---|---|
State (TXLSFormulaCacheState) | xlfcsNotFormula, xlfcsMissing, xlfcsLoaded, xlfcsCalculated vagy xlfcsInvalidated |
Kind (TXLSFormulaCacheValueKind) | xlfcvBlank, xlfcvNumber, xlfcvDateTime, xlfcvString, xlfcvBoolean vagy xlfcvError |
Value | A saját tulajdonú gyorsítótárazott Variant, ha a metódus True értéket ad vissza, egyébként Unassigned |
Az üres eredmények, az üres karakterláncok, a logikai hamis, a numerikus nulla és a hibák megkülönböztetett típusokat őriznek meg, és nem használatosak a gyorsítótár-jelenlét helyettesítőiként
A BIFF numerikus gyorsítótárak Double maradnak, mert a rekordnak nincs dátumtípus-jelzője; a hibagyorsítótárak varError értékként térnek vissza
Csomag-alapú munkafüzeteknél az OOXML t="d" és az ODF dátumértékek varDate értéket adnak, az OOXML t="e" varError értéket ad, és egy ODF gyorsítótárazott üres érték a void értéktípussal őrződik meg
Egy képlet módosítása érvényteleníti korábbi gyorsítótárát, míg egy gyorsítótárazott érték hozzárendelése, majd a képlet hozzárendelése kiszámolt gyorsítótárat rögzít
Minden megosztott képlettag megtartja a saját gyorsítótár-jelenlétét és értékét; egy tárolt eredmény nélküli követő xlfcsMissing állapotot jelez a gyökértag gyorsítótárának öröklése helyett
Számítás nélküli szerződés
A metódus közvetlen ritkacella-keresést végez, és soha nem hívja meg a kalkulátort, felhasználói függvény visszahívást, képlettoken-dekompilációt, függőségfrissítéseket, gyorsítótár-írásokat vagy módosultsági állapotváltozásokat
Ha számítás szükséges, használja a cella szokásos Value tulajdonságát
Az olvasó élettartama
A CreateFormulaCacheReader csak olvasható adaptort ad vissza, amelyet a munkafüzet élettartamára szóló foglalás támogat, a munkafüzet tulajdonjogának átruházása nélkül
A munkafüzet megsemmisítése után bármely ezen az adaptáron keresztüli lekérdezés EXLSFormulaCacheReaderInvalidated kivételt vált ki a felszabadított munkafüzet-állapot dereferálása helyett
Példa
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');