Bevarelse af metadata i klassiske XLS-projektmapper
HotXLS bevarer BIFF8-metadataposter på projektmappeniveau, som Excel kan placere i klassiske .xls -filer. Dette omfatter metadata om, hvem der sidst har gemt, metadata om projektmappedeling og revisionsbeskyttelsesposter, som ikke er tilgængelige som redigerbare high-level-API-objekter
Bevarede poster
WRITEACCESS($005C) gemmer navnet på den Excel-bruger, der sidst gemte projektmappen. HotXLS viser dette gennemIXLSWorkbook.LastSavedBy/TXLSWorkbook.LastSavedByFILESHARING($005B) ogFILESHARING2($01A5) bevares, når en projektmappe oprettet i Excel åbnes og gemmes igenPROT4REV($01AF) ogPROT4REVPASS($01BC) bevarer projektmappens revisionsbeskyttelsesmetadata under open-save-cyklusserHIDEOBJ($008D) og nul-længdeTEMPLATE($0060) bevarer projektmappens visningspolitik og skabelonmarkørerTABID($013D) ogBOOKEXT($0863) bevarer identifikatorer for regnearksfaner og metadata for projektmappeudvidelserUSERSVIEWBEGIN($01AA) tilUSERSVIEWEND($01AB) bevarer Excel Custom Views i projektmappens globaler og regnearks-understrømme, herunder ikke-modellerede poster inde i blokkenOBPROJ,USES-ELFS,BOOKBOOL,BACKUP,FNGROUPCOUNT,COUNTRYogRECALCIDfortsætter med at rundture gennem den eksisterende sti til bevarelse af rå poster
API-flade
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;
Posterne om fildeling og revisionsbeskyttelse bevares bevidst som rå BIFF-poster-payloads. HotXLS fortolker ikke eller omskriver deres interne flag og adgangskode-hashes, så en projektmappe oprettet i Excel kan passere gennem HotXLS uden at miste disse metadataCreatedDate, LastSavedDate, RevisionNumber, EditTimeMinutes) gennem en round-trip i OLE-dokumentegenskab-strømmen, så en projektmappe, der indlæses og gemmes, beholder sine oprindelige stempeloplysninger, medmindre applikationen ændrer dem
De tre beskyttelsesflag eksponerer de gemte rå records som typede værdier: SharedRevisionProtected mirrors the PROT4REV shared-workbook revision-tracking flag, SharedRevisionPasswordHash the legacy 16-bit PROT4REVPASSWORD hash, and WindowProtected the WINDOWPROTECT der låser projektmappens vindueskonfiguration. De er læse/skrive på klassen, så applikationer kan oprette de samme tilstande som Excel
Recordene til fildeling og revisionsbeskyttelse bevidst gemmes som rå BIFF-record-payloads. HotXLS fortolker ikke deres interne flag og adgangskodehashes om, og omskriver dem heller ikke, så en projektmappe oprettet i Excel kan passere gennem HotXLS uden at miste disse metadata
Opdater navnet på brugeren, der sidst gemte
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;
Brug kryptering separat
Metadata om projektmappedeling er adskilt fra HotXLS-filkryptering. For at skrive en krypteret klassisk XLS-fil skal du angive EncryptionPassword inden du gemmer:
Workbook.EncryptionPassword := 'secret';
Workbook.SaveAs('encrypted.xls');