HotXLS Belgeleri

SaveSemanticSnapshot ve ComputeSemanticHash yöntemleri

Çalışma kitabı anlamının sürümlenmiş kanonik gösterimini akışa yazar veya tam olarak bu baytların SHA-256 değerini hesaplar

Sözdizimi

procedure SaveSemanticSnapshot(AStream: TStream); overload;
procedure SaveSemanticSnapshot(AStream: TStream;
  AProfile: TXLSSemanticSnapshotProfile;
  AOptions: TXLSSemanticSnapshotOptions); overload;

function ComputeSemanticHash: WideString; overload;
function ComputeSemanticHash(
  AProfile: TXLSSemanticSnapshotProfile;
  AOptions: TXLSSemanticSnapshotOptions): WideString; overload;

Yöntemler, Klasik IXLSWorkbook ve TXLSWorkbook tarafından lxHandle içinde, TXLSXWorkbook tarafından ise lxHandleX içinde sunulur

Profil ve seçenek türleri lxSemanticSnapshot içinde bildirilir ve her iki çalışma kitabı birimi üzerinden görünürdür

Profiller

DeğerAnlam
xlsspContentSıradan anlam kimliği denetimleri için uygun kanonik çalışma kitabı içeriği
xlsspSecurityCompleteİçerik artı, sıradan içerik kimliğinden bilinçli olarak dışlanan desteklenen opak güvenlik ve koruma durumu

Seçenekler

DeğerKapsanan durum
xlssoIncludeViewerStateSeçimler, etkin görünüm durumu ve diğer desteklenen görüntüleyiciye yönelik durum
xlssoIncludeVolatileMetadataDesteklenen zaman damgaları, üretici meta verileri ve diğer bilinçli olarak geçici alanlar
xlssoIncludeFormulaCachedResultsDepolanan formül sonuçları ve desteklenen dış bağlantı önbellekleri, yeniden hesaplama veya dış G/Ç olmadan

Seçenek kümesinin türü TXLSSemanticSnapshotOptions = set of TXLSSemanticSnapshotOption şeklindedir. Parametresiz aşırı yüklemeler, boş seçenek kümesiyle xlsspContent profilini kullanır

Akış ve kimlik kuralları

Modern hücre özellikleri

TXLSSemanticCellStyle.CellControlKind, xlssControlNone, xlssControlUnknown ve xlssControlCheckbox içeren TXLSSemanticCellControlKind türündedir; CellControlDefaultState, xlssCheckboxUnchecked, xlssCheckboxChecked ve xlssCheckboxBlank içeren TXLSSemanticCheckboxDefaultState türündedir

XLSX stil okumaları, hücreler oluşturmadan doğrudan ve devralınan denetimleri çözer; kanonik stil serileştirmesi, bilinmeyen bir özellik çantasını sıradan hücre saymak yerine xlssControlUnknown'u reddeder

Anlık görüntüler ve karmalar, tüm sütunları hücrelere genişletmeden komşu eşit bölgeleri birleştirerek normalleştirilmiş etkin denetim dikdörtgenlerini içerir; ilgisiz varsayılan-olmayan stil kaplamaları mevcut desteklenmeyen-normalleştirme sınırlarını korur

TXLSXWorkbook.ReadSemanticFeatures(xlsxSemanticCellImages, Sheet, AMaxBytes, AMaxItems), hücre adresine göre anahtarlanmış ayrık girdileri döndürür; tam kodlanmış PNG veya JPEG baytları, içerik türü, alternatif metin ve dekoratif meta veri dahil; kotalar kanonik baytları ve resim girdilerini kapsar ve aşırı büyük yükler kopyalamadan önce reddedilir

Çalışma kitabı karşılaştırması, lcoDrawings seçildiğinde bu resim tanımlarını içerir; lcoCellStyles ve lcoBlankStyleRegions ise etkin Checkbox biçimlerini içerir; yalnızca eşleşen fallback hataları, ayrı resimleri eşit yapmaz

Bilinmeyen zengin değerli resim grafikleri, seçili özellik karşılaştırması veya anlık görüntü geçişi sırasında EXLSSemanticSnapshot fırlatır; bu işlemler çalışma kitabı okuma kirasını tutar ve incelenen hücreleri hesaplamaz

Eşzamanlılık ve hatalar

Her iki yöntem de tüm geçiş boyunca bir çalışma kitabı okuma kiralaması tutar

Eşzamanlı bir genel değişiklik, çalışma kitabı durumu değiştirilmeden EXLSWorkbookWriteGuardUnavailable ile başarısız olur; algılanan bir jenerasyon değişimi veya desteklenmeyen belirsiz anlam yapısı ise EXLSSemanticSnapshot oluşturur

Delphi örneği

var
  Snapshot: TFileStream;
  Hash: WideString;
begin
  Snapshot:= TFileStream.Create('workbook.semantic', fmCreate);
  try
    Workbook.SaveSemanticSnapshot(Snapshot,
      xlsspSecurityComplete,
      [xlssoIncludeFormulaCachedResults]);
  finally
    Snapshot.Free;
  end;

  Hash:= Workbook.ComputeSemanticHash;

C++Builder örneği

TFileStream *snapshot = new TFileStream(
  L"workbook.semantic", fmCreate);
try
{
  workbook->SaveSemanticSnapshot(snapshot);
}
__finally
{
  delete snapshot;
}

WideString hash = workbook->ComputeSemanticHash();

Anlık görüntü modeli başvurusu

Anlık görüntü motoru çalışma kitabı nesnelerine bağlı değildir: aşağıdaki her şey lxSemanticSnapshot içinde bildirilir ve çalışma kitabı yöntemleri, aynı genel giriş noktalarının üzerindeki ince sarmalayıcılardır

Genişletme arayüzleri

Herhangi bir kaynağın anlık görüntüsünü üretmek veya bu görüntünün karmasını oluşturmak için IXLSSemanticWorkbookSource arayüzünü; üretilen formüllerin çözümlenmiş dış başvuru ve tanımlı ad bilgisini taşıması için ise isteğe bağlı olarak IXLSSemanticFormulaResolver arayüzünü uygulayın

IXLSSemanticWorkbookSource = interface
  procedure WriteCommon(AWriter: TXLSSemanticCanonicalWriter);
end;

IXLSSemanticFormulaResolver = interface
  function ResolveFormulaReference(AExternID: Integer;
    out AInfo: TXLSSemanticFormulaReferenceInfo): Boolean;
  function ResolveFormulaName(ANameID, AExternID: Integer;
    out AInfo: TXLSSemanticFormulaNameInfo): Boolean;
end;

TXLSSemanticFormulaReferenceInfo = record
  LinkKind: TXLSSemanticFormulaLinkKind;
  BookName: WideString;
  FirstSheetName: WideString;
  LastSheetName: WideString;
end;

TXLSSemanticFormulaNameInfo = record
  NameKind: TXLSSemanticFormulaNameKind;
  LinkKind: TXLSSemanticFormulaLinkKind;
  Name: WideString;
  ScopeSheetName: WideString;
  BookName: WideString;
end;

WriteCommon içinde yazıcı opak bir tanıtıcıdır: ilkel yöntemlerini doğrudan çağırmayın — BeginContainer / EndContainer etiketli bir kapsayıcıyı çerçeveler; WriteNull, WriteBoolean, WriteUInt32, WriteUInt64, WriteInt32, WriteInt64, WriteBinary64, WriteWideString ve WriteBytes her birinde bir kanonik ilkel değeri kodlar; Finish akışı mühürler, Finished ise tamamlanmayı bildirir — her üreticinin birebir aynı baytları üretmesi için tanıtıcıyı aşağıdaki üretim yardımcılarına geri geçirin

Global giriş noktaları

procedure XLSSaveSemanticSnapshot(AStream: TStream;
  const ASource: IXLSSemanticWorkbookSource;
  AProfile: TXLSSemanticSnapshotProfile;
  AOptions: TXLSSemanticSnapshotOptions);
function XLSComputeSemanticHash(
  const ASource: IXLSSemanticWorkbookSource;
  AProfile: TXLSSemanticSnapshotProfile;
  AOptions: TXLSSemanticSnapshotOptions): WideString;
procedure XLSInitializeSemanticCellStyle(out AStyle: TXLSSemanticCellStyle);
function XLSBuiltinSemanticNumberFormat(AId: Word): WideString;

XLSInitializeSemanticCellStyle, tek tek alanlar düzenlenmeden önce bir stil kaydını kanonik varsayılanlarla doldurur; XLSBuiltinSemanticNumberFormat, yerleşik sayı biçimi kimliğini (164'ün altındaki değerleri) biçim dizesiyle eşler — üretilen stilleri ve kodu çözülmüş akışları yorumlamak isteyenlerin buna ihtiyacı olur

Model sözlüğü

GrupTürler
SayfaTXLSSemanticSheetKind (worksheet, macro, chart, VBA, unknown), TXLSSemanticSheetVisibility (visible, hidden, very hidden), TXLSSemanticDefinedNameScope (çalışma kitabı veya çalışma sayfası), TXLSSemanticRange / TXLSSemanticRanges (birleştirmelerin, koşullu biçimlendirmelerin ve tabloların kullandığı dikdörtgen aralıklar)
HücreTXLSSemanticCellKind (blank, number, datetime, text, boolean, error, formula)
StilTXLSSemanticCellStyle (eksiksiz kanonik hücre stili), bir tint değeriyle birlikte TXLSSemanticColor ve TXLSSemanticColorKind (none, automatic, system, ARGB, theme, indexed), TXLSSemanticBorderEdge / TXLSSemanticBorderStyle, TXLSSemanticFillPattern, TXLSSemanticGradientKind / TXLSSemanticGradientStop / TXLSSemanticGradientStops, TXLSSemanticUnderline, TXLSSemanticFontVerticalAlign
FormülTXLSSemanticFormulaEncoding (ayrıştırılmış ağaç veya opak metin), TXLSSemanticFormulaArrayKind (none, CSE, dynamic), TXLSSemanticFormulaNodeKind, TXLSSemanticFormulaRangeKind, TXLSSemanticFormulaLinkKind (same sheet, internal, external, add-in, DDE, OLE, other), TXLSSemanticFormulaNameKind
Çizim ve grafiklerTXLSSemanticDrawingKind (image, textbox, chart, group, form control), TXLSSemanticDrawingAnchorMode (move and size, move only, absolute), TXLSSemanticImageFormat, TXLSSemanticChartFamily

Üretim yardımcıları

Bu global üyeler, WriteCommon'a geçirilen yazıcıya tek bir model parçası yazar: XLSWriteSemanticLiteralCell, XLSWriteSemanticCellStyle, XLSWriteSemanticColor, XLSWriteSemanticRanges, XLSWriteSemanticMerge, XLSWriteSemanticAxisEntry, XLSWriteSemanticFormulaTree, XLSWriteSemanticFormulaDefinition ve XLSWriteSemanticFormulaCell (formül hücreleri dizi sınırlarını ve isteğe bağlı bir önbellek sonucunu taşır). XLSWriteSemanticWorkbookCommon çalışma kitabı kapsayıcısını açar ve özel kaynakların normalde ilk çağırdığı WriteCommon yöntemini devreye getirir

Ayrıca bkz.

IXLSWorkbook arayüzü · TXLSXWorkbook sınıfı · CreateReadOnlyView yöntemi