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
| Alan | Anlam |
|---|---|
SheetIndex / SheetName | Görünüme yerel çalışma sayfası kimliği |
Row / Col | Bire dayalı hücre koordinatları |
StyleIndex | Saklanan Klasik XF indeksi veya XLSX hücre biçimi indeksi |
Kind | Metin, sayı, tarih-saat, Boolean, formül, hata veya boş sınıflandırması |
Value | Yeniden hesaplama yapılmadan saklanan skaler değer veya formül önbelleği değeri |
HasFormulaCache / FormulaCache | Formül önbelleğinin varlığı, kaynağı, değer türü ve sahip olunan önbellek değeriTXLSFormulaCacheState), value kind (TXLSFormulaCacheValueKind), and owned cached value |
FormulaEvaluation | A 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 |
Formula | Varsayı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;