CreateReadOnlyView metoda
Kreira lagan prikaz samo za čitanje nad modelom učitane Classic ili XLSX radne sveske
Sintaksa
function CreateReadOnlyView: IXLSReadOnlyWorkbookView;
CreateReadOnlyView deklariše klasični IXLSWorkbook u lxHandle i XLSX IXLSXWorkbookOwner u lxHandleX; zajednički interfejs prikaza, opcije i tipovi snimaka deklarisani su u lxStandard
Stanje i životni vek prikaza
Kreiranje prikaza traje konstantno vreme i ne obilazi radne listove, ćelije, stilove, imena niti crteže
Svaki prikaz ima svoj ActiveSheetIndexkoji počinje od jedan, pa više prikaza može da izabere različite radne listove bez promene klasičnog ActiveSheetIndex te XLSX ActiveIndex, IsSelectedi ActiveTab
Prikaz drži zakup čitanja dok postoji, a mutacije radne sveske brzo propadaju sa EXLSWorkbookWriteGuardUnavailable pre promene modela
Klasične radne sveske držite preko IXLSWorkbook , a XLSX radne sveske preko IXLSXWorkbookOwner kada koristite prikaze; interfejs vlasnika i svaki prikaz tada zadržavaju istu radnu svesku sa brojanjem referenci i mogu se otpustiti u bilo kom redosledu
Ne pozivajte Free nad konkretnom TXLSWorkbook ili TXLSXWorkbook dok na nju još upućuje neki interfejs vlasnika ili prikaz
Snimci ćelija
TryReadCell koristi koordinate reda i kolone koje počinju od jedan na aktivnom listu prikaza i vraća False samo kada na toj koordinati ne postoji uskladištena ćelija
Čitanje nepostojeće ćelije ne stvara skladište i ne pomera generaciju radne sveske
TXLSReadOnlyCellSnapshot poseduje ime svog lista, vrednost, tekst formule, podatke o kešu i izračunavanju, koordinate, vrstu i indeks stila i nikada ne izlaže objekat radne sveske u koji se može pisati
| Polje | Značenje |
|---|---|
SheetIndex / SheetName | Identitet radnog lista u kontekstu prikaza |
Row / Col | Koordinate ćelije koje počinju od jedan |
StyleIndex | Uskladišteni klasični XF indeks ili XLSX indeks formata ćelije |
Kind | Razvrstavanje u tekst, broj, datum-vreme, Bulovu vrednost, formulu, grešku ili praznu ćeliju |
Value | Uskladištena skalarna vrednost ili vrednost iz keša formule bez ponovnog izračunavanja |
HasFormulaCache / FormulaCache | Postojanje, poreklo, vrsta vrednosti i keširana vrednost u vlasništvu keša formuleTXLSFormulaCacheState), value kind (TXLSFormulaCacheValueKind), and owned cached value |
FormulaEvaluation | A TXLSFormulaEvaluationInfo record whose TXLSFormulaEvaluationState Da li je izračunavanje bilo neprimenljivo, nije bilo zatraženo, izračunato ili nije uspelo, uz kod rezultata izračunavača i vrednost rezultata u vlasništvu |
Formula | Podrazumevano prazno i popunjeno samo kada je tekst formule eksplicitno uključen |
Pravila za formule
Podrazumevano ćelije sa formulama koriste postojeći uskladišteni keš i nikada ne izračunavaju, ne pozivaju korisničku funkciju, ne ažuriraju stanje neažurnosti niti upisuju keš nazad u radnu svesku
Dodajte xlsvIncludeFormulaText u Options kada je potreban tekst formule; Classic po potrebi kreira dekoder privatnog za prikaz, dok XLSX kopira svoj uskladišteni string formule, i nijedan put ne inicijalizuje niti menja izračunavač radne sveske TXLSReadOnlyViewOptions = set of TXLSReadOnlyViewOption. Classic po potrebi kreira dekoder privatnog za prikaz, dok XLSX kopira svoj sačuvani string formule, i nijedan put ne inicijalizuje niti menja kalkulator radne sveske
Formula bez učitanog ili izračunatog keša izveštava HasFormulaCache=False i ostavlja Value kao Unassigned
Dodajte xlsvEvaluateFormulas za izračunavanje formula kroz izračunavač, stanje rekurzije, skalarni keš, keš matrica i keš kompajliranih formula privatne za prikaz; dobijeni Value i FormulaEvaluation.Value nikada ne zamenjuju uskladišteni keš radne sveske niti polja izvršnog okruženja kompajliranih formula
Standardne tabelarne greške vraćaju se kao Variant Standardne tabelarne greške vraćaju se kao Variant vrednosti grešaka sa xlfesCalculated, dok nepodržana ili unutrašnja neuspela izračunavanja izveštavaju xlfesFailed i zadržavaju izvorni uskladišteni keš u FormulaCache
Ponovljena čitanja kroz jedan prikaz ponovo koriste njegov privatni keš izračunavanja za generaciju zakupa, dok različiti prikazi ostaju nezavisni i mogu istovremeno da izračunavaju istu deljenu formulu
Izračunavanje spoljnih formula u XLSX-u čita samo keš externalLink iz lokalne datoteke i nikada ne dereferencira slabu registraciju žive radne sveske niti izvodi spoljni ulazno-izlazni rad
Niti i učinkovitost
Koristite jedan prikaz po radnoj niti; odvojeni prikazi mogu da skeniraju različite radne listove ili istovremeno da izračunavaju istu formulu, dok pozivaoci ne smeju da menjaju aktivni list ili opcije jednog prikaza iz druge niti
Nakon kreiranja uobičajena čitanja ćelija ne ulaze u monitor ni kritičnu sekciju jer zakup sprečava istovremenu mutaciju radne sveske
Provera otpuštanja drži svaki neaktivan prikaz ispod 64 KiB fiksnog stanja, sto neaktivnih prikaza ispod 8 MiB, a kreiranje prikaza nezavisno od veličine radne sveske sa pragom od jedne milisekunde p95 na modelu sa milion ćelija
Testni paket učinkovitosti takođe ograničava uticaj neaktivnog prikaza na postojeća jednonitna skeniranja kursorom na pet odsto i zahteva da osam prikaza koja skeniraju nezavisne radne listove postignu najmanje petostruku propusnost u odnosu na jedan prikaz na računaru za proveru
Primer
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;Za XLSX zadržite konkretnu radnu svesku preko njenog interfejsa vlasnika pre kreiranja prikaza
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;