클래식 XLS 통합 문서 메타데이터 보존
HotXLS는 Excel이 고전 .xls 파일에 넣을 수 있는 통합 문서 수준 BIFF8 메타데이터 레코드를 보존합니다. 여기에는 저장 주체 메타데이터, 통합 문서 공유 메타데이터, 그리고 편집 가능한 고급 API 개체로 노출되지 않는 수정 보호 레코드가 포함됩니다
보존된 레코드
WRITEACCESS($005C) stores Excel user 이름 last saved 통합 문서. HotXLS exposes 이 통해IXLSWorkbook.LastSavedBy/TXLSWorkbook.LastSavedByFILESHARING($005B)과FILESHARING2($01A5)는 Excel로 만든 통합 문서를 열었다가 다시 저장할 때 그대로 유지됩니다PROT4REV($01AF)과PROT4REVPASS($01BC)는 열기-저장 주기 동안 통합 문서 수정 보호 메타데이터를 보존합니다HIDEOBJ($008D)과 길이가 0인TEMPLATE($0060)는 통합 문서 보기 정책과 템플릿 표시를 보존합니다TABID($013D)와BOOKEXT($0863)는 시트 탭 식별자와 통합 문서 확장 메타데이터를 보존합니다USERSVIEWBEGIN($01AA)부터USERSVIEWEND($01AB)까지는 블록 안의 미모델 레코드를 포함해 통합 문서 전역과 워크시트 하위 스트림의 Excel 사용자 지정 보기를 보존합니다OBPROJ,USES-ELFS,BOOKBOOL,BACKUP,FNGROUPCOUNT,COUNTRY,RECALCID는 기존 원시 레코드 보존 경로를 통해 계속 왕복됩니다
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');