HotXLS Belgeleri

CreateReadOnlyView yöntemi

Yüklü bir Klasik veya XLSX çalışma kitabı modeli üzerinde hafif bir salt okunur görünüm oluşturur

Sözdizimi

function CreateReadOnlyView: IXLSReadOnlyWorkbookView;

CreateReadOnlyView , Klasik tarafında IXLSWorkbook içindeki lxHandle ve XLSX tarafında IXLSXWorkbookOwner içindeki lxHandleXtarafından bildirilir; paylaşılan görünüm arayüzü, seçenekler ve anlık görüntü türleri lxStandard

Görünüm durumu ve yaşam süresi

Görünüm oluşturmak sabit sürede tamamlanır ve çalışma sayfalarını, hücreleri, stilleri, adları veya çizimleri geçmez

Her görünümün kendine ait, bire dayalı bir ActiveSheetIndexvardır; böylece birden çok görünüm, Klasik ActiveSheetIndex ile XLSX ActiveIndex, IsSelectedve ActiveTab

Görünüm var olduğu sürece bir okuma kiralaması tutar ve çalışma kitabı değişiklikleri modeli değiştirmeden EXLSWorkbookWriteGuardUnavailable ile anında başarısız olur

Görünümleri kullanırken Klasik çalışma kitaplarını IXLSWorkbook üzerinden, XLSX çalışma kitaplarını IXLSXWorkbookOwner üzerinden tutun; sahip arayüzü ve her görünüm aynı başvuru sayılı çalışma kitabını tutar ve her ikisi de herhangi bir sırayla serbest bırakılabilir

Sahip arayüzü veya bir görünüm hâlâ başvuruyorken somut bir Free veya TXLSWorkbook üzerinde TXLSXWorkbook çağırmayın

Hücre anlık görüntüleri

TryReadCell görünümün etkin sayfasında bire dayalı satır ve sütun koordinatları kullanır ve yalnızca o koordinatta saklanan bir hücre yoksa False döndürür

Eksik hücre okuması depolama oluşturmaz ve çalışma kitabı jenerasyonunu ilerletmez

TXLSReadOnlyCellSnapshot sayfa adının, değerin, formül metninin, önbellek ve değerlendirme bilgilerinin, koordinatların, türün ve stil indeksinin sahibidir ve asla yazılabilir bir çalışma kitabı nesnesi açığa çıkarmaz

AlanAnlam
SheetIndex / SheetNameGörünüme yerel çalışma sayfası kimliği
Row / ColBire dayalı hücre koordinatları
StyleIndexSaklanan Klasik XF indeksi veya XLSX hücre biçimi indeksi
KindMetin, sayı, tarih-saat, Boolean, formül, hata veya boş sınıflandırması
ValueYeniden hesaplama yapılmadan saklanan skaler değer veya formül önbelleği değeri
HasFormulaCache / FormulaCacheFormül önbelleğinin varlığı, kaynağı, değer türü ve sahip olunan önbellek değeriTXLSFormulaCacheState), value kind (TXLSFormulaCacheValueKind), and owned cached value
FormulaEvaluationA TXLSFormulaEvaluationInfo record whose TXLSFormulaEvaluationState Değerlendirmenin uygulanabilir olmadığını, istenmediğini, hesaplandığını veya başarısız olduğunu gösteren durum ile değerlendirici sonuç kodu ve sahip olunan sonuç değeri
FormulaVarsayılan olarak boştur ve yalnızca formül metni açıkça etkinleştirildiğinde doldurulur

Formül ilkesi

Varsayılan olarak formül hücreleri mevcut saklanan önbelleği kullanır ve asla hesaplama yapmaz, kullanıcı işlevi çağırmaz, kirli durumu güncellemez veya önbelleği çalışma kitabına geri yazmaz

Formül metni gerektiğinde xlsvIncludeFormulaText içine Options ekleyin; Klasik tarafı talep üzerine görünüme özel bir çözücü oluşturur, XLSX ise saklanan formül dizesini kopyalar ve hiçbir yol çalışma kitabı hesaplayıcısını başlatmaz veya değiştirmez TXLSReadOnlyViewOptions = set of TXLSReadOnlyViewOption. Classic, talep üzerine görünüme özel bir çözücü oluşturur; XLSX ise sakladığı formül dizesini kopyalar ve hiçbir yol çalışma kitabı hesaplayıcısını başlatmaz veya değiştirmez

Yüklenmiş veya hesaplanmış önbelleği olmayan bir formül HasFormulaCache=False bildirir ve Value değerini Unassigned

Formülleri görünüme özel bir hesaplayıcı, özyineleme durumu, skaler önbellek, dizi-matris önbelleği ve XLSX derlenmiş formül önbelleği üzerinden değerlendirmek için xlsvEvaluateFormulas ekleyin; ortaya çıkan Value ve FormulaEvaluation.Value asla çalışma kitabının saklanan önbelleğini veya derlenmiş formül çalışma zamanı alanlarını değiştirmez

Standart elektronik tablo hataları Variant ile birlikte xlfesCalculatedhata değerleri olarak döndürülür; desteklenmeyen veya iç değerlendirme hataları ise xlfesFailed bildirir ve özgün saklanan önbelleği FormulaCache

Tek bir görünüm üzerinden yapılan yinelenen okumalar kiralama jenerasyonu için özel değerlendirme önbelleğini yeniden kullanır; farklı görünümler bağımsız kalır ve aynı paylaşılan formülü eşzamanlı değerlendirebilir

XLSX dış formül değerlendirmesi yalnızca dosya yerel externalLink önbelleğini okur; asla zayıf canlı çalışma kitabı kaydına başvurmaz veya dış G/Ç gerçekleştirmez

İş parçacığı kullanımı ve performans

Her çalışan iş parçacığı için tek bir görünüm kullanın; ayrı görünümler farklı çalışma sayfalarını tarayabilir veya aynı formülü eşzamanlı değerlendirebilir, ancak çağıranlar bir görünümün etkin sayfasını veya seçeneklerini başka bir iş parçacığından değiştirmemelidir

Oluşturma sonrasında sıradan hücre okumaları bir monitöre veya kritik bölüme girmez; çünkü kiralama eşzamanlı çalışma kitabı değişikliğini engeller

Serbest bırakma doğrulaması her boşta görünümü 64 KiB'nin altında sabit durumda, yüz boşta görünümü 8 MiB'nin altında tutar ve görünüm oluşturmayı çalışma kitabı boyutundan bağımsız kılar; bir milyon hücreli modelde bir milisaniyelik p95 eşiği uygulanır

Performans paketi ayrıca boşta bir görünümün mevcut tek iş parçacıklı imleç taramaları üzerindeki etkisini yüzde beş ile sınırlar ve doğrulama ana bilgisayarında bağımsız çalışma sayfalarını tarayan sekiz görünümün tek görünümün aktarım hızının en az beş katına ulaşmasını ister

Örnek

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 için görünümler oluşturmadan önce somut çalışma kitabını sahip arayüzü üzerinden tutun

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;

Ayrıca bkz.