Документация HotXLS

Сохранение метаданных рабочей книги классического XLS

HotXLS сохраняет записи метаданных BIFF8 на уровне книги, которые Excel может помещать в классические файлы .xls . Сюда входят метаданные о сохранении, метаданные общего доступа к книге и записи защиты от изменений, не представленные как редактируемые высокоуровневые объекты 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, поэтому загруженная и сохранённая книга сохраняет исходные штампы времени, пока приложение их не изменит

Три флага защиты предоставляют сохранённые сырые записи как типизированные значения: 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');
      

Связанные разделы