Documentação do HotXLS

Preservação de metadados do livro XLS clássico

HotXLS preserva registos de metadados BIFF8 ao nível do livro que o Excel pode colocar em ficheiros clássicos .xls . Isto inclui metadados de saved-by, metadados de partilha do livro e registos de proteção de revisão que não são expostos como objetos API de alto nível editáveis

Registos preservados

Superfície da API

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;
      

Os registos de partilha de ficheiros e de proteção de revisão são preservados intencionalmente como cargas úteis brutas de registos BIFF. HotXLS não reinterpreta nem reescreve os respetivos sinalizadores internos e hashes de palavra-passe, pelo que um livro criado no Excel pode passar por HotXLS sem perder esses metadadosCreatedDate, LastSavedDate, RevisionNumber, EditTimeMinutes) fazem round-trip através do stream de propriedades de documento OLE, por isso um livro aberto e gravado mantém os seus carimbos originais, a menos que a aplicação os altere

As três flags de proteção expõem os registos em bruto preservados como valores tipados: SharedRevisionProtected mirrors the PROT4REV shared-workbook revision-tracking flag, SharedRevisionPasswordHash the legacy 16-bit PROT4REVPASSWORD hash, and WindowProtected the WINDOWPROTECT que bloqueia a configuração da janela do livro. São de leitura/escrita na classe, para que as aplicações possam escrever os mesmos estados que o Excel escreve

Os registos de partilha de ficheiros e de proteção de revisão são preservados deliberadamente como payloads em bruto de registos BIFF. O HotXLS não reinterpreta nem reescreve as flags internas e os hashes de palavra-passe, por isso um livro criado no Excel pode passar pelo HotXLS sem perder esses metadados

Actualizar o nome do utilizador guardado

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;
      

Utilizar encriptação separadamente

Os metadados de partilha do livro são separados da encriptação de ficheiros do HotXLS. Para escrever um ficheiro XLS clássico encriptado, defina EncryptionPassword antes de guardar:

Workbook.EncryptionPassword := 'secret';
Workbook.SaveAs('encrypted.xls');
      

Tópicos relacionados