Dokumentacija HotXLS

Metode SaveSemanticSnapshot i ComputeSemanticHash

Zapisuje u tok verzionirani kanonski prikaz semantike radne knjige ili izračunava SHA-256 upravo tih bajtova

Sintaksa

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;

Metode izlažu klasični IXLSWorkbook i TXLSWorkbook u lxHandle te TXLSXWorkbook u lxHandleX

Tipovi profila i opcija deklarirani su u lxSemanticSnapshot i vidljivi su kroz obje jedinice radne knjige

Profili

VrijednostZnačenje
xlsspContentKanonski sadržaj radne knjige prikladan za uobičajene provjere semantičkog identiteta
xlsspSecurityCompleteSadržaj plus podržano neprozirno stanje sigurnosti i očuvanja koje je namjerno isključeno iz uobičajenog identiteta sadržaja

Opcije

VrijednostUključeno stanje
xlssoIncludeViewerStateOdabiri, stanje aktivnog prikaza i drugo podržano stanje namijenjeno pregledniku
xlssoIncludeVolatileMetadataPodržane vremenske oznake, metapodaci proizvođača i druga namjerno promjenjiva polja
xlssoIncludeFormulaCachedResultsPohranjeni rezultati formula i podržane predmemorije vanjskih veza bez ponovnog izračunavanja ili vanjskog I/O-a

Preopterećenja bez parametara koriste xlsspContent s praznim skupom opcija

Pravila toka i identiteta

Istovremenost i pogreške

Obje metode drže zakup čitanja radne knjige tijekom cijelog obilaska

Istovremena javna mutacija propada prije promjene stanja radne knjige s EXLSWorkbookWriteGuardUnavailable, dok otkrivena promjena generacije ili nepodržana dvosmislena semantička struktura podiže EXLSSemanticSnapshot

Primjer za 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;

Primjer za C++Builder

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

WideString hash = workbook->ComputeSemanticHash();

Vidi također

sučelje IXLSWorkbook · klasa TXLSXWorkbook · CreateReadOnlyView metoda

Sučelja proširenja

Implementirajte IXLSSemanticWorkbookSource za emitiranje ili hash snimke bilo kojeg izvora, i neobavezno IXLSSemanticFormulaResolver kako emitirane formule nose razriješene informacije vanjskih referenci i definiranih imena

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;

Unutar WriteCommon zapisivač je neprozirna ručica: ne pozivajte njegove primitivne metode — BeginContainer / EndContainer okviruju označeni spremnik, a WriteNull, WriteBoolean, WriteUInt32, WriteUInt64, WriteInt32, WriteInt64, WriteBinary64, WriteWideString i WriteBytes kodiraju po jednu kanonsku primitivu, s Finish koji zapečaćuje tok i Finished koji izvještava o dovršenosti — proslijedite je natrag u pomoćnike za emitiranje u nastavku kako bi svaki proizvođač emitirao identične bajtove

Globalne funkcije ulaznih točaka

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 popunjava zapis stila kanonskim defaultima prije uređivanja pojedinačnih polja; XLSBuiltinSemanticNumberFormat preslikava id ugrađenog formata broja (ispod 164) u njegov niz formata, koji potrošači trebaju za tumačenje emitiranih stilova i dekodiranih tokova

Rječnik modela

GroupTypes
SheetTXLSSemanticSheetKind (worksheet, macro, chart, VBA, unknown), TXLSSemanticSheetVisibility (visible, hidden, very hidden), TXLSSemanticDefinedNameScope (radna knjiga ili radni list), TXLSSemanticRange / TXLSSemanticRanges (pravokutni rasponi koje koriste spajanja, uvjetni formati i tablice)
CellTXLSSemanticCellKind (blank, number, datetime, text, boolean, error, formula)
StyleTXLSSemanticCellStyle (potpuni kanonski stil ćelije), TXLSSemanticColor s TXLSSemanticColorKind (none, automatic, system, ARGB, theme, indexed) i nijansom, TXLSSemanticBorderEdge / TXLSSemanticBorderStyle, TXLSSemanticFillPattern, TXLSSemanticGradientKind / TXLSSemanticGradientStop / TXLSSemanticGradientStops, TXLSSemanticUnderline, TXLSSemanticFontVerticalAlign
FormulaTXLSSemanticFormulaEncoding (parsirano stablo naspram neprozirnog teksta), TXLSSemanticFormulaArrayKind (none, CSE, dynamic), TXLSSemanticFormulaNodeKind, TXLSSemanticFormulaRangeKind, TXLSSemanticFormulaLinkKind (isti list, internal, external, add-in, DDE, OLE, other), TXLSSemanticFormulaNameKind
Drawing i grafikoniTXLSSemanticDrawingKind (image, textbox, chart, group, form control), TXLSSemanticDrawingAnchorMode (move and size, move only, absolute), TXLSSemanticImageFormat, TXLSSemanticChartFamily

Pomoćnici za emitiranje

Ove globalne funkcije zapisuju jedan fragment modela u zapisivač proslijeđen WriteCommon-u: XLSWriteSemanticLiteralCell, XLSWriteSemanticCellStyle, XLSWriteSemanticColor, XLSWriteSemanticRanges, XLSWriteSemanticMerge, XLSWriteSemanticAxisEntry, XLSWriteSemanticFormulaTree, XLSWriteSemanticFormulaDefinition i XLSWriteSemanticFormulaCell (ćelije formula nose granice polja i neobavezan predmemorirani rezultat). XLSWriteSemanticWorkbookCommon otvara spremnik radne knjige i poziva WriteCommon, koji ga prvi obično pozivaju prilagođeni izvori

Vidi također

IXLSWorkbook sučelje · TXLSXWorkbook klasa · CreateReadOnlyView metoda