HotXLS Belgeleri

Seyrek anahat geometrisi

lxOutline birimi, satır ve sütun anahatları için motordan bağımsız geometri ve değişiklik planlaması sağlar
Yalnızca somutlaştırılmış aralıkları saklar, bitişik anahat düzeyi geçişlerinden özet düğümlerini tanır ve her çalışma sayfası koordinatı için girdi ayırmadan özet-sonra ve özet-önce düzenleri için sıkıştırılmış durum değişiklikleri oluşturur

Temel türler

TXLSOutlineAxis = (xoaRows, xoaColumns);

TXLSOutlineChildMode = (xocPreserve, xocCollapse, xocExpand);

TXLSOutlineMutationPlan = class
  constructor Create(AAxis: TXLSOutlineAxis);
  procedure Clear;
  property Axis: TXLSOutlineAxis;
  property Count: Integer;
  property Changes[Index: Integer]: TXLSOutlineStateChange;
end;

TXLSOutlineGeometry = class
  constructor Create(AAxis: TXLSOutlineAxis;
    ASummaryAfter: Boolean);
  procedure Clear;
  property Axis: TXLSOutlineAxis;
  property SpanCount: Integer;
  procedure AddSpan(AFirstIndex, ALastIndex, ALevel: Integer;
    AHidden, ACollapsed: Boolean);
  function TryGetNode(ANodeIndex: Integer;
    out ANode: TXLSOutlineNode): Boolean;
  function TryBuildNodeCollapsePlan(ANodeIndex: Integer;
    ACollapsed: Boolean; AChildMode: TXLSOutlineChildMode;
    APlan: TXLSOutlineMutationPlan): Boolean;
  procedure BuildDisplayLevelPlan(ADisplayLevel: Integer;
    AChildMode: TXLSOutlineChildMode;
    APlan: TXLSOutlineMutationPlan);
end;
Satır ve sütun indeksleri bire dayalıdır, anahat düzeyleri negatif olamaz ve aralıklar kesinlikle artan, çakışmayan sırayla eklenmelidir
Aynı düzime, gizlilik ve daraltma durumuna sahip bitişik aralıklar otomatik olarak birleştirilir; atlanan indeksler örtük olarak sıfır düzime, görünür duruma ve daraltma işareti yokluğuna sahiptir
Her iki sınıf da kendi Axis değerini oluşturulma anından hatırlar; Clear, iç arabellekleri yeniden ayırmadan bir planı veya geometriyi yeniden kullanım için boşaltır ve SpanCount geometrinin o anda kaç birleşmiş aralık barındırdığını bildirir

Düğüm anlamı

NodeIndexArayanın sorguladığı fiziksel özet satırı veya sütunu
FirstDetailIndex / LastDetailIndexDüzeyi özet öğesinden daha derin olan bitişik ayrıntı aralığı
SummaryLevelÖzet öğesi üzerinde saklanan anahat düzeyi; öğe somutlaştırılmamışsa sıfır
LevelDüğümün temsil ettiği grup düzeyi; SummaryLevel + 1 değerine eşittir
SummaryHiddenÖzet öğesi üzerinde saklanan gizlilik durumu
CollapsedÖzet öğesi üzerinde saklanan açık daraltma işareti
SummaryAfterAyrıntılar özet öğesinden önce geliyorsa True, ayrıntılar onu izliyorsa false
İç içe gruplar bağımsız kalır; çünkü her sorgu, düzeyi seçilen özet öğesinden daha derin olmayan ilk bitişik aralıkta durur
Bir boşluk ayrıntı aralığını sona erdirir; böylece seyrek meta veri, kullanılmayan koordinatları yanlışlıkla tek bir grupta köprüleyemez

Değişiklik planları

Bir değişiklik planı, sıralı bire dayalı aralıklar ve her aralığın gizlilik durumunu, daraltma durumunu veya her ikisini de değiştirip değiştirmediğini belirten bir alan maskesi içerir; bitişik eşdeğer değişiklikler otomatik olarak birleştirilir
xocPreserveSeçilen düğümü, alt düğümlerin daraltma işaretlerini koruyarak değiştirir; bu, varsayılan iç içe grup davranışıdır
xocCollapseSeçilen düğümün içinde kalan veya istenen görüntüleme düzeyinin altında gizli olan alt düğümleri daraltılmış olarak işaretler
xocExpandSeçilen düğümün içinde kalan veya istenen görüntüleme düzeyinin altında gizli olan alt düğümlerin daraltma işaretlerini temizler
xocPreserve ile bir üst öğeyi genişletmek doğrudan ayrıntıları ortaya çıkarır; daraltılmış alt öğelere ait ayrıntılar gizli kalır. Daraltılmış bir üst öğenin içindeki bir alt öğeyi genişletmek, içeriği o üst öğe üzerinden ortaya çıkarmaz
Görüntüleme düzeyleri bire dayalıdır: 1. düzey tüm üst düzey grupları daraltır ve her daha yüksek değer, eşleşen sınır düğümü işaretlerini ayarlayarak bir ek anahat düzeyi daha ortaya çıkarır
İstenen durumu zaten içeren bir geometriden aynı durumun planını oluşturmak boş bir plan üretir; bir düğüm olmayanı sorgulamak ise boş planla birlikte false döndürür
Düğüm işlemleri seçilen özet öğesinin bağımsız gizlilik durumunu değiştirmeden bırakır; görüntüleme düzeyi planları, bir anahat grubunun dışında gizlenmiş sıfır düzeyli öğeleri yeniden göstermez

Çalışma sayfası bağdaştırıcıları

function TryGetOutlineNode(AAxis: TXLSOutlineAxis;
  ANodeIndex: Integer; out ANode: TXLSOutlineNode): Boolean;
function SetOutlineNodeCollapsed(AAxis: TXLSOutlineAxis;
  ANodeIndex: Integer; ACollapsed: Boolean;
  AChildMode: TXLSOutlineChildMode = xocPreserve): Boolean;
procedure SetOutlineDisplayLevel(AAxis: TXLSOutlineAxis;
  ADisplayLevel: Integer;
  AChildMode: TXLSOutlineChildMode = xocPreserve);
TXLSWorksheet ve TXLSXWorksheet aynı üç yöntemi sunar; böylece çağıranlar geometriyi elle oluşturmadan bire dayalı bir satır veya sütun özet düğümünü sorgulayabilir veya değiştirebilir
Klasik bağdaştırıcı yalnızca ayrılmış satır bloklarını ve atanmış sütun meta verilerini okur; XLSX bağdaştırıcısı ise seyrek anahat düzeyi, gizlilik ve daraltma listelerini birleştirir ve tek bir yazma işleminde tek bir sıkıştırılmış değişiklik planı uygular
OpenDocument satır ve sütun grupları yerel iç içe table:display durumlarını korur; doğrudan meta veri düzenlemeleri ve yapısal satır veya sütun değişiklikleri bu durumu güvenle mantıksal özet düğümüne yansıtır ve XLSX'e dönüşüm, daraltma işaretini tüm grup üyeleri yerine XLSX özet öğesine yazar
Mevcut TXLSXWorksheet.ToggleRowGrouped ve ToggleColGrouped yöntemleri uyumluluk sarmalayıcıları olarak kullanılmaya devam eder; bunların bağımsız değişkeni ilk ayrıntı satırı veya sütunudur ve sarmalayıcı, geçiş yapmadan önce yön duyarlı özet düğümünü çözümler

Delphi örneği

Geometry := TXLSOutlineGeometry.Create(xoaRows, True);
Plan := TXLSOutlineMutationPlan.Create(xoaRows);
try
  Geometry.AddSpan(2, 4, 1, False, False);
  Geometry.AddSpan(5, 5, 0, False, False);

  if Geometry.TryGetNode(5, Node) then
    UseOutlineNode(Node.FirstDetailIndex,
      Node.LastDetailIndex, Node.Collapsed);

  if Geometry.TryBuildNodeCollapsePlan(5, True,
    xocPreserve, Plan) then
    ApplyOutlineChanges(Plan);
finally
  Plan.Free;
  Geometry.Free;
end;

C++Builder örneği

Lxoutline::TXLSOutlineGeometry *geometry =
  new Lxoutline::TXLSOutlineGeometry(Lxoutline::xoaColumns, false);
try {
  geometry->AddSpan(3, 3, 0, false, true);
  geometry->AddSpan(4, 7, 1, true, false);

  Lxoutline::TXLSOutlineNode node;
  if (geometry->TryGetNode(3, node))
    UseOutlineNode(node.FirstDetailIndex, node.LastDetailIndex,
      node.Collapsed);
}
__finally {
  delete geometry;
}

Performans ve kapsam

Düğüm araması bir ikili arama kullanır ve ardından yalnızca seçilen grubun kestiği bitişik somutlaştırılmış aralıklara geçer; bu, n aralık ve k ziyaret edilen aralık için O(log n + k) maliyeti demektir
Toplu değişiklik planlaması, doğrusal bir monoton yığın geçişiyle her somutlaştırılmış düğümü keşfeder, daraltılmış görünürlük aralıklarını birleştirir ve kullanılmayan koordinatlara uğramadan sıkıştırılmış aralık değişiklikleri yayar
Oluşturucu, yalnızca sağlanan aralıkları tutarak son XLSX çalışma sayfası satırını kabul eder; böylece yüksek bir koordinat milyon girdilik bir ayırma veya tarama anlamına gelmez
Çalışma sayfası bağdaştırıcısı regresyon kapısı, 8. satır ve 1,048,576. satıra yakın altı somutlaştırılmış satır girdisi üzerinde aynı 32,768 düğüm sorgusunu ve 2,048 daraltma veya genişletme değişikliğini çalıştırır, sıfır hücre somutlaştırması gerektirir ve yüksek koordinat maliyetini düşük koordinat temel çizgisiyle sınırlar
TXLSOutlineGeometry asla doğrudan çalışma kitabı verisi yazmaz; motor bağdaştırıcıları döndürülen planı doğrular ve uygular, böylece geometri analizi ile durum değişikliği ayrı kalır

Ayrıca bkz.

Ek klasik XLS API üyeleri
Gelişmiş XLSX API üyeleri
Ek kitaplık API üyeleri