HotXLS-dokumentation

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

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');
      

Relaterede emner