HotXLS-dokumentaatio

TryGetCachedFormulaValue metodi

Lukee tallennetun kaavatuloksen laskematta kaavaa tai muuttamatta työkirjan tilaa

Metodi on käytettävissä sekä IXLSWorkbook- että TXLSXWorkbook-luokissa; pakettityökirjan toteutus kattaa XLSX- ja ODS-tiedostot

Moottoririippumaton koodi voi hankkia IXLSFormulaCacheReader-objektin kummastakin moottorista CreateFormulaCacheReader -metodilla ja käyttää samaa kyselymetodia

Syntaksi

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

Koordinaatit ja paluuarvo

SheetIndex, Row ja Col ovat yhdestä alkavia

Metodi palauttaa True vain kaavasolulle, jonka välimuistin tila on xlfcsLoaded tai xlfcsCalculated

Kelvottomat koordinaatit, puuttuvat solut ja muut kuin kaavasolut palauttavat False tilalla xlfcsNotFormula

Kaava ilman tallennettua tulosta palauttaa False tilalla xlfcsMissing; aiemmin välimuistissa ollut kaava, jonka kaava tai laskenta epäonnistui muutoksen jälkeen, palauttaa False tilalla xlfcsInvalidated

Välimuistitiedot

TXLSFormulaCacheInfo-tietue luokittelee välimuistin kahdella yksikössä lxStandard julistetulla luettelotyypillä: State on TXLSFormulaCacheState ja Kind on TXLSFormulaCacheValueKind

KenttäMerkitys
State (TXLSFormulaCacheState)xlfcsNotFormula, xlfcsMissing, xlfcsLoaded, xlfcsCalculated tai xlfcsInvalidated
Kind (TXLSFormulaCacheValueKind)xlfcvBlank, xlfcvNumber, xlfcvDateTime, xlfcvString, xlfcvBoolean tai xlfcvError
ValueOmistettu välimuistissa oleva Variant-arvo, kun metodi palauttaa True, muuten Unassigned

Tyhjät tulokset, tyhjät merkkijonot, totuusarvo false, numeerinen nolla ja virheet säilyttävät erilliset lajit, eikä niitä käytetä välittäjinä välimuistin olemassaolon sijaan

BIFF-numeeriset välimuistit pysyvät Double-tyyppisinä, koska tietueessa ei ole päivämäärätyypin merkkiä; virhevälimuistit palautetaan varError-arvoina

Pakettityökirjoille OOXML t="d" ja ODF-päivämääräarvot palauttavat varDate-arvon, OOXML t="e" palauttaa varError-arvon, ja ODF:n välimuistissa oleva tyhjä solu säilytetään void-arvolajilla

Kaavan muuttaminen mitätöi sen aiemman välimuistin, kun taas välimuistissa olevan arvon sijoittaminen ja sen jälkeen kaavan sijoittaminen tallentaa lasketun välimuistin

Jokainen jaetun kaavan jäsen säilyttää oman välimuistinsa olemassaolon ja arvonsa; seuraajasolun kaava ilman tallennettua tulosta raportoi tilan xlfcsMissing sen sijaan, että se perisi juurijäsenen välimuistin

Ei laskentaa -sopimus

Metodi suorittaa suoran harvojen solujen haun, eikä se koskaan kutsu laskinta, käyttäjän funktion takaisinkutsua, kaavatokenien dekompilointia, riippuvuuksien päivityksiä, välimuistiin kirjoituksia tai muutostilan muutoksia

Käytä solun tavallista Value -ominaisuutta, kun laskenta tarvitaan

Lukijan elinkaari

CreateFormulaCacheReader palauttaa vain luku -sovittimen, jota tukee työkirjan elinkaaren mittainen laina ilman työkirjan omistajuuden siirtoa

Kun työkirja on tuhottu, mikä tahansa kyseisen sovittimen kautta tehty kysely nostaa EXLSFormulaCacheReaderInvalidated -poikkeuksen viittaamatta vapautettuun työkirjan tilaan

Esimerkki

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');

Katso myös