HotXLS-Dokumentation

Beibehaltung von Metadaten klassischer XLS-Arbeitsmappen

HotXLS bewahrt arbeitsmappenweite BIFF8-Metadatendatensätze, die Excel in klassischen .xls-Dateien ablegen kann. Dazu gehören Metadaten zu gespeichert von, Arbeitsmappenfreigabe und Überarbeitungsschutz, die nicht als editierbare High-Level-API-Objekte bereitgestellt werden

Beibehaltene Datensätze

API-Oberfläche

type
  IXLSWorkbook = class
    property LastSavedBy: WideString;
    property EncryptionPassword: WideString;
  end;

  TXLSWorkbook = class
    property LastSavedBy: WideString;
    property EncryptionPassword: WideString;
    property CreatedDate: TDateTime;
    property LastSavedDate: TDateTime;
    property RevisionNumber: Integer;
    property EditTimeMinutes: Double;
    property SharedRevisionProtected: Boolean;
    property SharedRevisionPasswordHash: Word;
    property WindowProtected: Boolean;
  end;
      

Die vier SummaryInformation-Datums- und Numerikeigenschaften (CreatedDate, LastSavedDate, RevisionNumber, EditTimeMinutes) durchlaufen den OLE-Dokumenteigenschaften-Stream per Roundtrip, sodass eine geladene und gespeicherte Arbeitsmappe ihre ursprünglichen Zeitstempel behält, solange die Anwendung sie nicht ändert

Die drei Schutzflags legen die erhaltenen Rohdatensätze als typisierte Werte offen: SharedRevisionProtected spiegelt das PROT4REV-Flag zur Überarbeitungsverfolgung freigegebener Arbeitsmappen, SharedRevisionPasswordHash den Legacy-16-Bit-PROT4REVPASSWORD-Hash und WindowProtected das WINDOWPROTECT-Flag, das die Konfiguration des Arbeitsmappenfensters sperrt. Sie sind auf der Klasse lesend und schreibend, sodass Anwendungen dieselben Zustände erzeugen können wie Excel

Die Datensätze zur Dateifreigabe und zum Überarbeitungsschutz werden absichtlich als rohe BIFF-Datensatz-Payloads bewahrt. HotXLS interpretiert oder schreibt ihre internen Flags und Passwort-Hashes nicht neu, sodass eine von Excel erzeugte Arbeitsmappe HotXLS durchlaufen kann, ohne diese Metadaten zu verlieren

Den gespeichert-von-Benutzernamen aktualisieren

uses lxHandle;

var
  Workbook: TXLSWorkbook;
begin
  Workbook := TXLSWorkbook.Create;
  try
    Workbook.Open('shared-template.xls');
    Workbook.LastSavedBy := 'Build Server';
    Workbook.SaveAs('shared-template-updated.xls');
  finally
    Workbook.Free;
  end;
end;
      

Verschlüsselung separat verwenden

Metadaten zur Arbeitsmappenfreigabe sind getrennt von der HotXLS-Dateiverschlüsselung. Um eine verschlüsselte klassische XLS-Datei zu schreiben, setze vor dem Speichern EncryptionPassword:

Workbook.EncryptionPassword := 'secret';
Workbook.SaveAs('encrypted.xls');
      

Verwandte Themen