Dokumentacija HotXLS

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

PoljePomen
SheetIndex / SheetNameIdentiteta delovnega lista v lokalnem kontekstu pogleda
Row / ColKoordinate celice s številčenjem od 1
StyleIndexShranjeni klasični indeks XF ali indeks formata celice XLSX
KindRazvrstitev v besedilo, število, datum-čas, logično vrednost, formulo, napako ali prazno celico
ValueShranjena skalarna vrednost ali vrednost iz predpomnilnika formul, brez ponovnega izračuna
HasFormulaCache / FormulaCachePrisotnost, izvor, vrsta vrednosti in lastniška predpomnjena vrednost predpomnilnika formul
FormulaEvaluationAli 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
FormulaPrivzeto 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;

Glej tudi