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
WRITEACCESS($005C) speichert den Excel-Benutzernamen, der die Arbeitsmappe zuletzt gespeichert hat. HotXLS stellt dies überIXLSWorkbook.LastSavedBy/TXLSWorkbook.LastSavedBybereitFILESHARING($005B) undFILESHARING2($01A5) sind retained wenn Excel-authored Arbeitsmappe ist opened und saved againPROT4REV($01AF) undPROT4REVPASS($01BC) bewahren Metadaten des Überarbeitungsschutzes der Arbeitsmappe während Öffnen-Speichern-ZyklenHIDEOBJ($008D) und zero-lengthTEMPLATE($0060) bewahren Arbeitsmappe view policy und template markersTABID($013D) undBOOKEXT($0863) bewahren Blatt tab identifiers und Arbeitsmappe extension metadataUSERSVIEWBEGIN($01AA) bisUSERSVIEWEND($01AB) bewahren Excel-Benutzerdefinierte Ansichten in den globalen Arbeitsmappendaten und den Arbeitsblatt-Substreams, einschließlich nicht modellierter Datensätze innerhalb des BlocksOBPROJ,USES-ELFS,BOOKBOOL,BACKUP,FNGROUPCOUNT,COUNTRYundRECALCIDbleiben weiterhin über den bestehenden Pfad zur Bewahrung roher Datensätze round-trip-fähig
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');