CreateReadOnlyView metoda
Ustvari lahkoten pogled, ki je samo za branje, nad naloženim modelom klasičnega ali XLSX delovnega zvezka
Skladnja
function CreateReadOnlyView: IXLSReadOnlyWorkbookView;
CreateReadOnlyView razglašata Classic IXLSWorkbook v lxHandle in XLSX IXLSXWorkbookOwner v lxHandleX; skupni vmesnik pogleda, možnosti in tipi posnetkov pa so razglašeni v lxStandard
Stanje pogleda in življenjska doba
Ustvarjanje pogleda poteka v konstantnem času in ne preišče delovnih listov, celic, slogev, imen ali risb
Vsak pogled ima svoj ActiveSheetIndex s številčenjem od 1, zato lahko več pogledov izbere različne delovne liste, ne da bi se spremenili Classic ActiveSheetIndex ali XLSX ActiveIndex, IsSelected in ActiveTab
Pogled, dokler obstaja, drži najem za branje, spremembe delovnega zvezka pa hitro odpovejo z EXLSWorkbookWriteGuardUnavailable, preden se model spremeni
Klasične delovne zvezke hranite prek IXLSWorkbook in delovne zvezke XLSX prek IXLSXWorkbookOwner, kadar uporabljate poglede; vmesnik lastnika in vsak pogled nato ohranjata isti delovni zvezek s števcem sklicev in lahko sprostita v katerem koli vrstnem redu
Ne klicite Free na konkretnem TXLSWorkbook ali TXLSXWorkbook, dokler se nanj še sklicuje vmesnik lastnika ali pogled
Posnetki celic
TryReadCell uporablja koordinate vrstice in stolpca s številčenjem od 1 na aktivnem listu pogleda in vrne False samo, ko na tisti koordinati ni shranjene celice
Branje manjkajoče celice ne ustvari shrambe in ne poveča generacije delovnega zvezka
TXLSReadOnlyCellSnapshot je lastnik imena svojega lista, vrednosti, besedila formule, podatkov o predpomnilniku in vrednotenju, koordinat, vrste in indeksa stila ter nikoli ne razkrije pisalnega objekta delovnega zvezka
| Polje | Pomen |
|---|---|
SheetIndex / SheetName | Identiteta delovnega lista v lokalnem kontekstu pogleda |
Row / Col | Koordinate celice s številčenjem od 1 |
StyleIndex | Shranjeni klasični indeks XF ali indeks formata celice XLSX |
Kind | Razvrstitev v besedilo, število, datum-čas, logično vrednost, formulo, napako ali prazno celico |
Value | Shranjena skalarna vrednost ali vrednost iz predpomnilnika formul, brez ponovnega izračuna |
HasFormulaCache / FormulaCache | Prisotnost, izvor, vrsta vrednosti in lastniška predpomnjena vrednost predpomnilnika formul |
FormulaEvaluation | Ali vrednotenje ni bilo uporabno, ni bilo zahtevano, se je izračunalo ali je spodletelo, poleg tega pa koda rezultata ocenjevalnika in lastniška vrednost rezultata |
Formula | Privzeto prazno in zapolnjeno samo, ko je besedilo formul izrecno omogočeno |
Pravilnik za formule
Privzeto formulski celice uporabijo obstoječi shranjeni predpomnilnik in nikoli ne izračunajo, ne pokličejo uporabniške funkcije, ne posodobijo stanja neshranjenih sprememb ali zapišejo predpomnilnika nazaj v delovni zvezek
Dodajte xlsvIncludeFormulaText k Options, ko je besedilo formule zahtevano; Classic zahtevi ustvari lasten dekodirnik pogleda, XLSX pa kopira svoj shranjen niz formule, nobena od poti pa ne inicializira ali spremeni kalkulatorja delovnega zvezka
Formula brez naloženega ali izračunanega predpomnilnika poroča HasFormulaCache=False in pusti Value kot Unassigned
Dodajte xlsvEvaluateFormulas za vrednotenje formul prek lastnega kalkulatorja pogleda, stanja rekurzije, skalarnega predpomnilnika, predpomnilnika matrik in predpomnilnika prevedenih formul XLSX; nastala Value in FormulaEvaluation.Value nikoli ne zamenjata shranjenega predpomnilnika delovnega zvezka ali polj izvajalnika prevedenih formul
Standardne napake preglednic so vrnjene kot vrednosti napak Variant s xlfesCalculated, nepodprte ali notranje napake vrednotenja pa poročajo xlfesFailed in obdržijo izvirni shranjeni predpomnilnik v FormulaCache
Ponovljena branja prek istega pogleda ponovno uporabijo njegov zasebni predpomnilnik vrednotenja za generacijo najema, različni pogledi pa ostanejo neodvisni in lahko isto skupno formulo vrednotijo sočasno
Zunanje vrednotenje formul XLSX bere samo predpomnilnik externalLink znotraj datoteke in nikoli ne razreši šibke registracije živega delovnega zvezka ali izvede zunanjega V/I
Niti in učinkovitost
Uporabite en pogled na delovno nit; ločeni pogledi lahko preiščejo različne delovne liste ali sočasno vrednotijo isto formulo, klicatelji pa ne smejo spreminjati aktivnega lista ali možnosti enega pogleda iz druge niti
Po ustvarjanju običajna branja celic ne vstopajo v monitor ali kritični odsek, ker najem preprečuje sočasno spreminjanje delovnega zvezka
Preverjanje sprostitve zagotavlja, da je vsak nedejavni pogled pod 64 KiB fiksnega stanja, sto nedejavnih pogledov pod 8 MiB, ustvarjanje pogleda pa neodvisno od velikosti delovnega zvezka z enim milisekundo vrata p95 na modelu z enim milijonom celic
Zmogljnostna testna zbirka prav tako omeji učinek nedejavnega pogleda na obstoječa enonitna preiskovanja s kazalcem na pet odstotkov in zahteva, da osem pogledov, ki preiščejo neodvisne delovne liste, doseže vsaj petkrat večjo prepustnost kot en sam pogled na validacijskem gostitelju
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 obdržite konkretni delovni zvezek prek njegovega vmesnika lastnika, preden ustvarite poglede
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;