Documentazione HotXLS

Preservazione dei metadati del workbook XLS classico

HotXLS preserva i record di metadati BIFF8 a livello di workbook che Excel può inserire nei file classici .xls . Questo include i metadati dell'utente che ha salvato per ultimo, i metadati di condivisione del workbook e i record di protezione delle revisioni che non sono esposti come oggetti API di alto livello modificabili

Record preservati

Superficie 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;
      

I record di condivisione del file e di protezione delle revisioni vengono preservati intenzionalmente come payload di record BIFF grezzi. HotXLS non reinterpreta né riscrive i relativi flag interni e gli hash delle password, quindi un workbook creato in Excel può passare attraverso HotXLS senza perdere quei metadatiCreatedDate, LastSavedDate, RevisionNumber, EditTimeMinutes) fanno un round-trip attraverso il flusso delle proprietà del documento OLE, quindi una cartella di lavoro caricata e salvata conserva i suoi timestamp originali a meno che l'applicazione non li modifichi

I tre flag di protezione espongono i record grezzi preservati come valori tipizzati: SharedRevisionProtected mirrors the PROT4REV shared-workbook revision-tracking flag, SharedRevisionPasswordHash the legacy 16-bit PROT4REVPASSWORD hash, and WindowProtected the WINDOWPROTECT flag che blocca la configurazione della finestra della cartella di lavoro. Sono di lettura/scrittura sulla classe, così le applicazioni possono scrivere gli stessi stati di Excel

I record di condivisione dei file e di protezione delle revisioni vengono preservati deliberatamente come payload di record BIFF grezzi. HotXLS non reinterpreta né riscrive i loro flag interni e gli hash delle password, così una cartella di lavoro creata con Excel può passare attraverso HotXLS senza perdere questi metadati

Aggiorna il nome dell'utente che ha salvato

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;
      

Usa la crittografia separatamente

I metadati di condivisione del workbook sono separati dalla crittografia dei file di HotXLS. Per scrivere un file XLS classico crittografato, imposta EncryptionPassword prima del salvataggio:

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

Argomenti correlati