Préservation des métadonnées de classeur XLS classique
HotXLS préserve les enregistrements de métadonnées BIFF8 au niveau du classeur que Excel peut placer dans les fichiers .xls classiques. Cela inclut les métadonnées de sauvegarde, les métadonnées de partage de classeur et les enregistrements de protection contre la révision qui ne sont pas exposés comme objets API de haut niveau modifiables
Enregistrements préservés
WRITEACCESS($005C) stocke le nom d'utilisateur Excel qui a enregistré le classeur pour la dernière fois. HotXLS l'expose viaIXLSWorkbook.LastSavedBy/TXLSWorkbook.LastSavedByFILESHARING($005B) etFILESHARING2($01A5) sont conservés lorsqu'un classeur créé par Excel est ouvert puis enregistré à nouveauPROT4REV($01AF) etPROT4REVPASS($01BC) préservent les métadonnées de protection contre la révision du classeur pendant les cycles d'ouverture-enregistrementHIDEOBJ($008D) etTEMPLATE($0060) de longueur nulle préservent la stratégie d'affichage du classeur et les marqueurs de modèleTABID($013D) etBOOKEXT($0863) préservent les identifiants d'onglet de feuille et les métadonnées d'extension de classeurUSERSVIEWBEGIN($01AA) jusqu'àUSERSVIEWEND($01AB) préservent les vues personnalisées Excel dans les globalités du classeur et les sous-flux de feuille de calcul, y compris les enregistrements non modélisés à l'intérieur du blocOBPROJ,USES-ELFS,BOOKBOOL,BACKUP,FNGROUPCOUNT,COUNTRYetRECALCIDcontinuent de faire l'aller-retour via le chemin de préservation des enregistrements bruts existant
Surface API
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;
Les enregistrements de partage de fichier et de protection contre la révision sont volontairement préservés comme charges utiles d'enregistrements BIFF bruts. HotXLS ne réinterprète ni ne réécrit leurs indicateurs internes ni leurs hachages de mot de passe, de sorte qu'un classeur créé par Excel peut traverser HotXLS sans perdre ces métadonnéesCreatedDate, LastSavedDate, RevisionNumber, EditTimeMinutes) survivent au flux de propriétés de document OLE, de sorte qu'un classeur chargé puis enregistré conserve ses horodatages d'origine tant que l'application ne les modifie pas
Les trois indicateurs de protection exposent les enregistrements bruts préservés sous forme de valeurs typées : SharedRevisionProtected mirrors the PROT4REV shared-workbook revision-tracking flag, SharedRevisionPasswordHash the legacy 16-bit PROT4REVPASSWORD hash, and WindowProtected the WINDOWPROTECT qui verrouille la configuration de la fenêtre du classeur. Ils sont en lecture/écriture sur la classe, afin que les applications puissent produire les mêmes états qu'Excel
Les enregistrements de partage de fichier et de protection de révision sont volontairement préservés comme charges utiles brutes d'enregistrements BIFF. HotXLS ne réinterprète ni ne réécrit leurs indicateurs internes ni leurs hachages de mot de passe, de sorte qu'un classeur créé par Excel peut traverser HotXLS sans perdre ces métadonnées
Mettre à jour le nom d'utilisateur sauvegardé
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;
Utiliser le chiffrement séparément
Les métadonnées de partage de classeur sont distinctes du chiffrement de fichiers HotXLS. Pour écrire un fichier XLS classique chiffré, définissez EncryptionPassword avant d'enregistrer :
Workbook.EncryptionPassword := 'secret';
Workbook.SaveAs('encrypted.xls');