Documentație HotXLS

Metodele SaveSemanticSnapshot și ComputeSemanticHash

Scrie în flux o reprezentare canonică versionată a semanticii registrului de lucru sau calculează SHA-256-ul exact al acelor octeți

Sintaxă

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;

Metodele sunt expuse de Classic IXLSWorkbook și TXLSWorkbook în lxHandle și de TXLSXWorkbook în lxHandleX

Tipurile de profil și de opțiuni sunt declarate în lxSemanticSnapshot și sunt vizibile prin ambele unități de registru de lucru

Profile

ValoareSemnificație
xlsspContentConținut canonic al registrului de lucru potrivit pentru verificări ordinare de identitate semantică
xlsspSecurityCompleteConținutul plus starea de securitate și de păstrare opacă suportată, exclusă în mod intenționat din identitatea ordinară de conținut

Opțiuni

ValoareStarea inclusă
xlssoIncludeViewerStateSelecțiile, starea vizualizării active și alte stări suportate destinate vizualizatorului
xlssoIncludeVolatileMetadataMarje temporale suportate, metadate de producător și alte câmpuri intenționat volatile
xlssoIncludeFormulaCachedResultsRezultate de formule stocate și cache-uri de legături externe suportate, fără recalculare sau I/O extern

Supraîncărcările fără parametri folosesc xlsspContent cu un set gol de opțiuni

Reguli de flux și de identitate

Concurență și erori

Ambele metode mențin un lease de citire al registrului de lucru pentru întreaga parcurgere

O mutație publică concurentă eșuează înainte de a schimba starea registrului de lucru cu EXLSWorkbookWriteGuardUnavailable, în timp ce o schimbare de generație detectată sau o structură semantică ambiguă nesuportată ridică EXLSSemanticSnapshot

Exemplu Delphi

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;

Exemplu C++Builder

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

WideString hash = workbook->ComputeSemanticHash();

Consultați și

Interfața IXLSWorkbook · Clasa TXLSXWorkbook · Metoda CreateReadOnlyView