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
WRITEACCESS($005C) memorizza il nome utente Excel che ha salvato per ultimo il workbook. HotXLS lo espone tramiteIXLSWorkbook.LastSavedBy/TXLSWorkbook.LastSavedByFILESHARING($005B) eFILESHARING2($01A5) vengono mantenuti quando un workbook creato in Excel viene aperto e salvato nuovamentePROT4REV($01AF) ePROT4REVPASS($01BC) preservano i metadati di protezione delle revisioni del workbook durante i cicli di apertura e salvataggioHIDEOBJ($008D) e ilTEMPLATE($0060) a lunghezza zero preservano la policy di visualizzazione del workbook e i marcatori dei modelliTABID($013D) eBOOKEXT($0863) preservano gli identificatori delle schede dei fogli e i metadati di estensione del workbookUSERSVIEWBEGIN($01AA) fino aUSERSVIEWEND($01AB) preservano le Visualizzazioni personalizzate di Excel nei global del workbook e nei sottostream dei fogli di lavoro, inclusi i record non modellati all'interno del bloccoOBPROJ,USES-ELFS,BOOKBOOL,BACKUP,FNGROUPCOUNT,COUNTRYeRECALCIDcontinuano a fare round-trip attraverso il percorso di preservazione dei record grezzi esistente
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');