HotXLS-dokumentation

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

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

Relaterade avsnitt