Behoud van klassieke XLS-werkmapmetadata
HotXLS bewaart BIFF8-metadatarecords op werkmapniveau die Excel in klassieke .xls -bestanden kan plaatsen. Dit omvat opgeslagen-door-metadata, werkmapdelingsmetadata en revisiebeveiligingsrecords die niet worden blootgesteld als bewerkbare API-objecten op hoog niveau
Bewaarde records
WRITEACCESS($005C) slaat de Excel-gebruikersnaam op die de werkmap voor het laatst heeft opgeslagen. HotXLS stelt dit beschikbaar viaIXLSWorkbook.LastSavedBy/TXLSWorkbook.LastSavedByFILESHARING($005B) enFILESHARING2($01A5) worden behouden wanneer een door Excel gemaakte werkmap opnieuw wordt geopend en opgeslagenPROT4REV($01AF) enPROT4REVPASS($01BC) bewaren de werkmap-revisiebeveiligingsmetadata tijdens open-save-cycliHIDEOBJ($008D) en zero-lengthTEMPLATE($0060) bewaren het werkmapweergavebeleid en sjabloonmarkeringenTABID($013D) enBOOKEXT($0863) bewaren werkbladtab-id's en werkmaporextensiemetadataUSERSVIEWBEGIN($01AA) tot en metUSERSVIEWEND($01AB) bewaren aangepaste weergaven van Excel in werkmapglobalen en werkbladsubstreams, inclusief niet-gemodelleerde records binnen het blokOBPROJ,USES-ELFS,BOOKBOOL,BACKUP,FNGROUPCOUNT,COUNTRYenRECALCIDblijven round-trippen via het bestaande pad voor het bewaren van ruwe records
API-oppervlak
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;
De vier SummaryInformation-eigenschappen voor datum en getal (CreatedDate, LastSavedDate, RevisionNumber, EditTimeMinutes) round-trippen via de OLE-stream met documenteigenschappen, dus een werkmap die wordt geladen en opgeslagen behoudt zijn oorspronkelijke tijdstempels tenzij de toepassing ze wijzigt
De drie beveiligingsvlaggen tonen de bewaarde ruwe records als getypeerde waarden: SharedRevisionProtected spiegelt de vlag PROT4REV voor revisietracking van gedeelde werkmappen, SharedRevisionPasswordHash de verouderde 16-bits hash PROT4REVPASSWORD en WindowProtected de vlag WINDOWPROTECT die de vensterconfiguratie van de werkmap vergrendelt. Ze zijn read-write op de class, zodat toepassingen dezelfde toestanden kunnen aanmaken als Excel dat doet
De bestandsdelings- en revisiebeveiligingsrecords worden bewust bewaard als ruwe BIFF-recordladingen. HotXLS herinterpreteert of herschrijft hun interne vlaggen en wachtwoord-hashes niet, zodat een door Excel gemaakte werkmap door HotXLS kan gaan zonder die metadata te verliezen
De opgeslagen-door-gebruikersnaam bijwerken
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;
Versleuteling afzonderlijk gebruiken
Werkmapdelingsmetadata is gescheiden van de bestandsversleuteling van HotXLS. Om een versleuteld klassiek XLS-bestand te schrijven, stelt u EncryptionPassword in voordat u opslaat:
Workbook.EncryptionPassword := 'secret';
Workbook.SaveAs('encrypted.xls');