Dokumentácia HotXLS

Metódy SaveSemanticSnapshot a ComputeSemanticHash

Streamuje verzovanú kanonickú reprezentáciu sémantiky zošita alebo vypočíta SHA-256 presne týchto bajtov

Syntax

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;

Metódy sprístupňujú klasické IXLSWorkbook a TXLSWorkbook v lxHandle a TXLSXWorkbook v lxHandleX

Typy profilu a volieb sú deklarované v lxSemanticSnapshot a sú viditeľné cez obe jednotky zošita

Profily

HodnotaVýznam
xlsspContentKanonický obsah zošita vhodný na bežné kontroly sémantickej identity
xlsspSecurityCompleteObsah plus podporovaný nepriehľadný stav zabezpečenia a zachovania, z bežnej identity obsahu zámerne vylúčený

Voľby

HodnotaZahrnutý stav
xlssoIncludeViewerStateVýbery, stav aktívneho zobrazenia a ďalší podporovaný stav orientovaný na prehliadač
xlssoIncludeVolatileMetadataPodporované časové pečiatky, metadáta výrobcu a ďalšie zámerne prchavé polia
xlssoIncludeFormulaCachedResultsUložené výsledky vzorcov a podporované medzipamäte externých odkazov bez prepočtu a externých vstupno-výstupných operácií

Preťaženia bez parametrov používajú xlsspContent s prázdnou sadou volieb

Pravidlá streamovania a identity

Súbežnosť a chyby

Obidve metódy po celý čas prechodu držia prenájom čítania zošita

Súbežná verejná mutácia zlyhá s EXLSWorkbookWriteGuardUnavailable skôr, než sa zmení stav zošita, zatiaľ čo zistená zmena generácie alebo nepodporovaná nejednoznačná sémantická štruktúra vyvolá EXLSSemanticSnapshot

Príklad pre 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;

Príklad pre C++Builder

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

WideString hash = workbook->ComputeSemanticHash();

Pozri tiež

Rozhranie IXLSWorkbook · Trieda TXLSXWorkbook · Metóda CreateReadOnlyView