HotXLS 文件

傳統 XLS 活頁簿中繼資料保留

HotXLS 會保留 Excel 可放在傳統 .xls 檔案中的活頁簿層級 BIFF8 中繼資料記錄。這包含已儲存作者資訊、活頁簿共用中繼資料,以及未以可編輯高階 API 物件公開的修訂保護記錄

保留的記錄

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;
      

SummaryInformation 的四個日期與數值屬性(CreatedDate、LastSavedDate、RevisionNumber、EditTimeMinutes)會透過 OLE 文件屬性資料流往返保存,因此載入再儲存的活頁簿會保留原始戳記,除非應用程式主動變更

三個保護旗標會把保留的原始記錄以具型別值公開:SharedRevisionProtected 對應 PROT4REV 共用活頁簿修訂追蹤旗標,SharedRevisionPasswordHash 對應舊式 16 位元 PROT4REVPASSWORD 雜湊,WindowProtected 對應鎖定活頁簿視窗設定的 WINDOWPROTECT 旗標。這些屬性在類別上是可讀寫的,應用程式因此能寫出與 Excel 相同的狀態

檔案共用與修訂保護記錄會刻意以原始 BIFF 記錄負載保留。HotXLS 不會重新解讀或改寫其內部旗標與密碼雜湊,因此 Excel 建立的活頁簿可以經過 HotXLS 而不遺失那些中繼資料

更新儲存者使用者名稱

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;
      

單獨使用加密

活頁簿共用中繼資料與 HotXLS 檔案加密是分開的。若要寫入加密的傳統 XLS 檔案,請在儲存前設定 EncryptionPassword :

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

相關主題