Bevarande av klassisk XLS-arbetsboksmetadata
HotXLS bevarar BIFF8-metadataposter på arbetsboksnivå som Excel kan placera i klassiska .xls -filer. Detta inkluderar sparad-av-metadata, metadata för arbetsboksdelning och versionsskyddsposter som inte exponeras som redigerbara API-objekt på hög nivå
Bevarade poster
WRITEACCESS($005C) lagrar namnet på den Excel-användare som senast sparade arbetsboken. HotXLS exponerar detta viaIXLSWorkbook.LastSavedBy/TXLSWorkbook.LastSavedByFILESHARING($005B) ochFILESHARING2($01A5) behålls när en arbetsbok som skapats i Excel öppnas och sparas igenPROT4REV($01AF) ochPROT4REVPASS($01BC) bevarar arbetsbokens versionsskyddsmetadata under öppna-spara-cyklerHIDEOBJ($008D) och noll-längdsTEMPLATE($0060) bevarar arbetsbokens visningsprincip och mallmarkeringarTABID($013D) ochBOOKEXT($0863) bevarar kalkylbladsflikidentifierare och metadata för arbetsbokstilläggUSERSVIEWBEGIN($01AA) tillUSERSVIEWEND($01AB) bevarar Excel-anpassade vyer i arbetsbokens globala delar och kalkylbladsunderströmmarna, inklusive omodellerade poster i blocketOBPROJ,USES-ELFS,BOOKBOOL,BACKUP,FNGROUPCOUNT,COUNTRYochRECALCIDfortsätter att round-trippa genom den befintliga råpost-bevarandesökvägen
API-yta
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;
Posterna för fildelning och versionsskydd bevaras avsiktligt som råa BIFF-postlaster. HotXLS omtolkar eller skriver inte om deras interna flaggor och lösenordshashar, så en arbetsbok som skapats i Excel kan passera genom HotXLS utan att förlora denna metadataCreatedDate, LastSavedDate, RevisionNumber, EditTimeMinutes) går fram och tillbaka via OLE-strömmen för dokumentegenskaper, så en arbetsbok som läses in och sparas behåller sina ursprungliga stämplar så länge programmet inte ändrar dem
De tre skyddsflaggorna exponerar de bevarade råa posterna som typade värden: SharedRevisionProtected mirrors the PROT4REV shared-workbook revision-tracking flag, SharedRevisionPasswordHash the legacy 16-bit PROT4REVPASSWORD hash, and WindowProtected the WINDOWPROTECT flagga som låser arbetsbokens fönsterkonfiguration. De är läs- och skrivbara på klassen så att program kan skapa samma tillstånd som Excel gör
Posterna för fildelning och revisionsskydd bevaras medvetet som råa BIFF-postnyttolaster. HotXLS tolkar inte om eller skriver om deras interna flaggor eller lösenordshashar, så en av Excel skapad arbetsbok kan passera HotXLS utan att förlora den metadatan
Uppdatera namnet på användaren som sparade
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;
Använd kryptering separat
Metadata för arbetsboksdelning är separat från HotXLS-filkryptering. För att skriva en krypterad klassisk XLS-fil anger du EncryptionPassword före sparning:
Workbook.EncryptionPassword := 'secret';
Workbook.SaveAs('encrypted.xls');