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 の 4 つの日付・数値プロパティ(CreatedDate、LastSavedDate、RevisionNumber、EditTimeMinutes)は OLE ドキュメント プロパティ ストリームを介して往復保存されるため、アプリケーションが変更しない限り、ロードして保存したワークブックは元のタイムスタンプを保ちます

3 つの保護フラグは、保持された raw レコードを型付きの値として公開します。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');
      

関連トピック