Dokumentacja HotXLS

Zachowanie metadanych klasycznego skoroszytu XLS

HotXLS zachowuje rekordy metadanych BIFF8 na poziomie skoroszytu, które Excel może umieszczać w klasycznych plikach .xls . Obejmuje to metadane saved-by, metadane udostępniania skoroszytu oraz rekordy ochrony wersji, które nie są udostępniane jako edytowalne obiekty wysokopoziomowego API

Zachowane rekordy

Powierzchnia 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;
      

Rekordy udostępniania pliku i ochrony wersji są celowo zachowywane jako surowe ładunki rekordów BIFF. HotXLS nie interpretuje na nowo ani nie przepisuje ich wewnętrznych flag i skrótów haseł, więc skoroszyt utworzony w Excelu może przejść przez HotXLS bez utraty tych metadanychCreatedDate, LastSavedDate, RevisionNumber, EditTimeMinutes) przechodzą round-trip przez strumień właściwości dokumentu OLE, więc skoroszyt po zapisie i ponownym otwarciu zachowuje swoje oryginalne znaczniki, dopóki aplikacja ich nie zmieni

Trzy flagi ochrony udostępniają zachowane surowe rekordy jako wartości typowane: SharedRevisionProtected mirrors the PROT4REV shared-workbook revision-tracking flag, SharedRevisionPasswordHash the legacy 16-bit PROT4REVPASSWORD hash, and WindowProtected the WINDOWPROTECT flaga blokująca konfigurację okna skoroszytu. Są one do odczytu i zapisu na klasie, dzięki czemu aplikacje mogą ustawiać te same stany, które ustawia Excel

Rekordy udostępniania plików i ochrony rewizji są celowo zachowywane jako surowe ładunki rekordów BIFF. HotXLS nie interpretuje ich wewnętrznych flag i skrótów haseł na nowo ani ich nie przepisuje, więc skoroszyt utworzony w Excelu może przejść przez HotXLS bez utraty tych metadanych

Aktualizacja nazwy użytkownika zapisanego

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;
      

Użyj szyfrowania osobno

Metadane udostępniania skoroszytu są niezależne od szyfrowania pliku HotXLS. Aby zapisać zaszyfrowany klasyczny plik XLS, ustaw EncryptionPassword przed zapisem:

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

Tematy pokrewne