CreateReadOnlyView metodi
Luo kevyen vain luku -näkymän ladatun Classic- tai XLSX-työkirjamallin yli
Syntaksi
function CreateReadOnlyView: IXLSReadOnlyWorkbookView;
CreateReadOnlyView määritellään klassisessa IXLSWorkbook-rajapinnassa yksikössä lxHandle ja XLSX:n IXLSXWorkbookOwner-rajapinnassa yksikössä lxHandleX; yhteinen näkymärajapinta, asetukset ja tilannekuvaltyypit määritellään yksikössä lxStandard
Näkymän tila ja elinkaari
Näkymän luominen on vakioaikaista, eikä se käy läpi laskentataulukoita, soluja, tyylejä, nimiä tai piirroksia
Jokaisella näkymällä on oma yhdestä alkava ActiveSheetIndex -arvonsa, joten useat näkymät voivat valita eri laskentataulukot muuttamatta klassista ActiveSheetIndex -arvoa tai XLSX:n ActiveIndex-, IsSelected- ja ActiveTab -arvoja
Näkymä pitää lukulainan olemassaolonsa ajan, ja työkirjan muokkaukset epäonnistuvat nopeasti EXLSWorkbookWriteGuardUnavailable -poikkeukseen ennen mallin muuttamista
Pidä Classic-työkirjoista kiinni IXLSWorkbook-rajapinnan ja XLSX-työkirjoista IXLSXWorkbookOwner-rajapinnan kautta näkymiä käytettäessä; omistajarajapinta ja jokainen näkymä pitävät sitten kiinni samasta viitelaskennallisesta työkirjasta, ja ne voidaan vapauttaa missä tahansa järjestyksessä
Älä kutsu Free -metodia konkreettiselle TXLSWorkbook- tai TXLSXWorkbook-oliolle, kun omistajarajapinta tai näkymä viittaa siihen vielä
Solutilannekuvat
TryReadCell käyttää yhdestä alkavia rivi- ja sarakekoordinaatteja näkymän aktiivisella laskentataulukolla ja palauttaa False vain, kun tallennettua solua ei ole kyseisissä koordinaateissa
Puuttuvan solun lukeminen ei luo tallennusta eikä siirrä työkirjan generointia eteenpäin
TXLSReadOnlyCellSnapshot omistaa laskentataulukkonsa nimen, arvon, kaavatekstin, välimuisti- ja evaluointitiedot, koordinaatit, lajin ja tyyliindeksin, eikä se koskaan paljasta kirjoitettavaa työkirjaoliota
| Kenttä | Merkitys |
|---|---|
SheetIndex / SheetName | Näkymäkohtaisen laskentataulukon identiteetti |
Row / Col | Yhdestä alkavat solukoordinaatit |
StyleIndex | Tallennettu klassinen XF-indeksi tai XLSX-solumuotoiluindeksi |
Kind | Luokittelu tekstiksi, luvuksi, päivämäärä-ajaksi, totuusarvoksi, kaavaksi, virheeksi tai tyhjäksi |
Value | Tallennettu skalaariarvo tai kaavavälimuistin arvo ilman uudelleenlaskentaa |
HasFormulaCache / FormulaCache | Kaavavälimuistin olemassaolo ja alkuperä (TXLSFormulaCacheState), arvon laji (TXLSFormulaCacheValueKind) ja omistettu välimuistissa oleva arvo |
FormulaEvaluation | TXLSFormulaEvaluationInfo-tietue, jonka TXLSFormulaEvaluationState raportoi ei-sovellettavissa, ei-pyydetty, laskettu tai epäonnistui -tilan sekä evaluaattorin tuloskoodin ja omistetun tulosarvon |
Formula | Oletuksena tyhjä ja täyttyy vain, kun kaavateksti on otettu nimenomaisesti käyttöön |
Kaavakäytäntö
Oletuksena kaavasolut käyttävät olemassa olevaa tallennettua välimuistia, eivätkä ne koskaan laske, kutsu käyttäjän funktiota, päivitä muutostilan tietoja tai kirjoita välimuistia takaisin työkirjaan
Lisää xlsvIncludeFormulaText lippuna Options-joukkoon, kun kaavateksti tarvitaan; valintajoukon tyyppi on TXLSReadOnlyViewOptions = set of TXLSReadOnlyViewOption. Classic luo näkymäkohtaisen dekooderin tarpeen mukaan, kun taas XLSX kopioi tallennetun kaavamerkkijononsa, eikä kumpikaan polku alusta tai muuta työkirjan laskinta
Kaava ilman ladattua tai laskettua välimuistia raportoi HasFormulaCache=False ja jättää Value -arvon Unassigned
Lisää xlsvEvaluateFormulas -lippu kaavojen arvioimiseksi näkymäkohtaisen laskimen, rekursiotilan, skalaarivälimuistin, matriisivälimuistin ja XLSX:n käännettyjen kaavojen välimuistin kautta; tuloksena oleva Value ja FormulaEvaluation.Value eivät koskaan korvaa työkirjan tallennettua välimuistia tai käännettyjen kaavojen ajonaikaisia kenttiä
Tavalliset laskentataulukkovirheet palautetaan Variant-virhearvoina tilalla xlfesCalculated, kun taas ei-tuetut tai sisäiset evaluointivirheet raportoivat tilan xlfesFailed ja säilyttävät alkuperäisen tallennetun välimuistin FormulaCache -kentässä
Toistuvat lukemat yhden näkymän kautta käyttävät uudelleen sen yksityistä evaluointivälimuistia lainan generoinnin ajan, kun taas eri näkymät pysyvät itsenäisinä ja voivat arvioida saman jaetun kaavan rinnakkain
XLSX:n ulkoisten kaavojen evaluointi lukee vain tiedostokohtaisen externalLink -välimuistin, eikä se koskaan viittaa heikkoon aktiivisen työkirjan rekisteröintiin tai tee ulkoista I/O:ta
Säikeistys ja suorituskyky
Käytä yhtä näkymää työskentelysäiettä kohden; erilliset näkymät voivat käydä läpi eri laskentataulukoita tai arvioida saman kaavan rinnakkain, kun taas kutsujien ei pidä muuttaa toisen säikeen näkymän aktiivista laskentataulukkoa tai asetuksia
Luomisen jälkeen tavalliset solujen lukemat eivät siirry monitoriin tai kriittiseen osioon, koska laina estää rinnakkaisen työkirjan muokkauksen
Vapautusvalidointi pitää jokaisen joutilaan näkymän alle 64 KiB kiinteässä tilassa, sadan joutilaan näkymän alle 8 MiB ja näkymien luomisen riippumattomana työkirjan koosta millisekunnin p95-rajan kanssa miljoonan solun mallilla
Suorituskykytestisarja rajoittaa myös joutilaan näkymän vaikutuksen olemassa oleviin yksisäikeisiin kursoriskannauksiin viiteen prosenttiin ja edellyttää, että kahdeksan itsenäisiä laskentataulukoita käyvää näkymää saavuttaa vähintään viisinkertaisen läpäisyn yhteen näkymään verrattuna validointikoneella
Esimerkki
var
Workbook: IXLSWorkbook;
View: IXLSReadOnlyWorkbookView;
Cell: TXLSReadOnlyCellSnapshot;
begin
Workbook := TXLSWorkbook.Create;
Workbook.Sheets.Add;
Workbook.Sheets[1].Cells[1, 1].Value := 'ready';
View := Workbook.CreateReadOnlyView;
View.Options := [xlsvEvaluateFormulas];
if View.TryReadCell(1, 1, Cell) then
Memo1.Lines.Add(VarToStr(Cell.Value));
end;
XLSX:ää varten pidä konkreettinen työkirja kiinni sen omistajarajapinnan kautta ennen näkymien luomista
var
Owner: IXLSXWorkbookOwner;
Workbook: TXLSXWorkbook;
View: IXLSReadOnlyWorkbookView;
begin
Workbook := TXLSXWorkbook.Create;
Owner := Workbook;
Workbook.Sheets.Add('Data').Cells[1, 1].Value := 42;
View := Owner.CreateReadOnlyView;
end;