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;
      

파일 공유 및 수정 보호 레코드는 의도적으로 원시 BIFF 레코드 페이로드로 보존됩니다. HotXLS는 내부 플래그와 암호 해시를 다시 해석하거나 다시 쓰지 않으므로 Excel로 만든 통합 문서가 해당 메타데이터를 잃지 않고 HotXLS를 통과할 수 있습니다CreatedDate, LastSavedDate, RevisionNumber, EditTimeMinutes)는 OLE 문서 속성 스트림을 통해 round-trip되므로, 응용 프로그램이 변경하지 않는 한 로드했다 저장한 통합 문서는 원래의 스탬프를 유지합니다

세 가지 보호 플래그는 보존된 원시 레코드를 타입이 지정된 값으로 노출합니다: SharedRevisionProtected mirrors the PROT4REV shared-workbook revision-tracking flag, SharedRevisionPasswordHash the legacy 16-bit PROT4REVPASSWORD hash, and WindowProtected the 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');
      

관련 항목