HotXLS-documentatie

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

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

Gerelateerde onderwerpen