HotXLS Docs

经典 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;
      

The four SummaryInformation date and numeric properties (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 before saving:

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

相关主题