Dokumentácia HotXLS

Metóda CreateReadOnlyView

Vytvorí ľahké zobrazenie len na čítanie nad modelom načítaného zošita Classic alebo XLSX

Syntax

function CreateReadOnlyView: IXLSReadOnlyWorkbookView;

CreateReadOnlyView deklaruje classic IXLSWorkbook v lxHandle a XLSX IXLSXWorkbookOwner v lxHandleX; zdieľané rozhranie zobrazenia, voľby a typy snímok sú deklarované v lxStandard

Stav zobrazenia a životnosť

Vytvorenie zobrazenia má konštantnú časovú zložitosť a neprechádza hárky, bunky, štýly, názvy ani kresby

Každé zobrazenie má vlastný ActiveSheetIndex indexovaný od jednotky, takže viacero zobrazení môže vyberať rôzne hárky bez zmeny classic ActiveSheetIndex alebo XLSX ActiveIndex, IsSelected a ActiveTab

Zobrazenie drží, pokiaľ existuje, čítaciu rezerváciu a mutácie zošita rýchlo zlyhajú s EXLSWorkbookWriteGuardUnavailable skôr, než sa model zmení

Pri používaní zobrazení držte classic zošity prostredníctvom IXLSWorkbook a XLSX zošity prostredníctvom IXLSXWorkbookOwner; rozhranie vlastníka aj každé zobrazenie potom uchovávajú ten istý zošit s referenčným počítaním a môžu byť uvoľnené v ľubovoľnom poradí

Nevolajte Free na konkrétny TXLSWorkbook alebo TXLSXWorkbook, kým naň stále odkazuje rozhranie vlastníka alebo zobrazenie

Snímky buniek

TryReadCell používa súradnice riadku a stĺpca indexované od jednotky na aktívnom hárku zobrazenia a vracia False len vtedy, keď na danej súradnici neexistuje uložená bunka

Čítanie chýbajúcej bunky nevytvára úložisko a neposúva generáciu zošita

TXLSReadOnlyCellSnapshot vlastní názov hárku, hodnotu, text vzorca, informácie o medzipamäti a vyhodnotení, súradnice, druh a index štýlu a nikdy nesprístupňuje zapisovateľný objekt zošita

PoleVýznam
SheetIndex / SheetNameIdentita hárku v rámci zobrazenia
Row / ColSúradnice bunky indexované od jednotky
StyleIndexUložený index classic XF alebo index formátu bunky XLSX
KindKlasifikácia text, číslo, dátum-čas, Boolean, vzorec, chyba alebo prázdna bunka
ValueUložená skalárna hodnota alebo hodnota z medzipamäte vzorcov bez prepočtu
HasFormulaCache / FormulaCachePrítomnosť medzipamäte vzorcov, jej pôvod, druh hodnoty a vlastnená kešovaná hodnota
FormulaEvaluationČi vyhodnotenie nebolo použiteľné, nevyžiadalo sa, prebehlo alebo zlyhalo, plus kód výsledku vyhodnocovacieho modulu a vlastnená výsledná hodnota
FormulaV predvolenom stave prázdny a vyplnený len vtedy, keď je text vzorca explicitne povolený

Politika vzorcov

V predvolenom nastavení bunky so vzorcami používajú existujúcu uloženú medzipamäť a nikdy nepočítajú, nevolajú používateľskú funkciu, neaktualizujú stav neaktuálnosti ani nezapisujú medzipamäť späť do zošita

Pridajte xlsvIncludeFormulaText do Options, keď je vyžadovaný text vzorca; classic na požiadanie vytvorí súkromný dekodér zobrazenia, zatiaľ čo XLSX skopíruje svoj uložený reťazec vzorca, a ani jedna cesta neinicializuje ani nemení kalkulátor zošita

Vzorec bez načítanej alebo vypočítanej medzipamäte hlási HasFormulaCache=False a ponecháva Value ako Unassigned

Pridajte xlsvEvaluateFormulas na vyhodnocovanie vzorcov prostredníctvom súkromného kalkulátora zobrazenia, stavu rekurzie, skalárnej medzipamäti, medzipamäti polí-matíc a medzipamäte skompilovaných vzorcov XLSX; výsledné Value a FormulaEvaluation.Value nikdy nenahradia uloženú medzipamäť zošita ani behové polia skompilovaného vzorca

Štandardné chyby tabuľkových procesorov sa vracajú ako chybové hodnoty Variant s xlfesCalculated, zatiaľ čo nepodporované alebo interné zlyhania vyhodnotenia hlásia xlfesFailed a uchovávajú pôvodnú uloženú medzipamäť v FormulaCache

Opakované čítania cez jedno zobrazenie znovu používajú jeho súkromnú vyhodnocovaciu medzipamäť pre danú generáciu rezervácie, zatiaľ čo rôzne zobrazenia ostanú nezávislé a môžu vyhodnocovať ten istý zdieľaný vzorec súbežne

Vyhodnocovanie externých vzorcov XLSX číta len medzipamäť externalLink miestneho súboru a nikdy nedereferencuje slabú registráciu živého zošita ani nevykonáva externé I/O

Vlákna a výkon

Používajte jedno zobrazenie na pracovné vlákno; oddelené zobrazenia môžu prehľadávať rôzne hárky alebo súbežne vyhodnocovať ten istý vzorec, zatiaľ čo volajúci nesmú meniť aktívny hárok alebo voľby jedného zobrazenia z iného vlákna

Po vytvorení nevstupujú bežné čítania buniek do monitora ani do kritickej sekcie, pretože rezervácia brání súbeznej mutácii zošita

Validácia uvoľňovania udržiava každé nečinné zobrazenie pod 64 KiB pevného stavu, sto nečinných zobrazení pod 8 MiB a vytváranie zobrazenia nezávislé od veľkosti zošita s bránou p95 jednej milisekundy na modeli s jedným miliónom buniek

Výkonnostná sada tiež obmedzuje vplyv nečinného zobrazenia na existujúce jednovláknové prehľadávanie kurzorom na päť percent a vyžaduje, aby osem zobrazení prehľadávajúcich nezávislé hárky dosiahlo aspoň päťnásobok priepustnosti jedného zobrazenia na validačnom hostiteľovi

Príklad

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;

Pre XLSX uchovajte konkrétny zošit prostredníctvom jeho rozhrania vlastníka skôr, než vytvoríte zobrazenia

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;

Pozri tiež