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
WRITEACCESS($005C) armazena o nome do utilizador do Excel que guardou o livro por último. HotXLS expõe isto através deIXLSWorkbook.LastSavedBy/TXLSWorkbook.LastSavedByFILESHARING($005B) eFILESHARING2($01A5) são preservados quando um livro criado no Excel é aberto e guardado novamentePROT4REV($01AF) ePROT4REVPASS($01BC) preservam metadados de proteção de revisão do livro durante ciclos abrir-guardarHIDEOBJ($008D) eTEMPLATEde comprimento zero preservam a política de vista do livro e os marcadores de modeloTABID($013D) eBOOKEXT($0863) preservam identificadores de separadores de folhas e metadados de extensão do livroUSERSVIEWBEGIN($01AA) atéUSERSVIEWEND($01AB) preservam Vistas Personalizadas do Excel nas globals do livro e nos subfluxos da folha, incluindo registos não modelados dentro do blocoOBPROJ,USES-ELFS,BOOKBOOL,BACKUP,FNGROUPCOUNT,COUNTRYeRECALCIDcontinuam a passar pelo caminho existente de preservação de registos brutos
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');