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

Метод SaveAs

Сохраняет рабочую книгу в другой файл или поток. Возвращает 1 при успехе

Синтаксис

function SaveAs(FileName: WideString): Integer;
function SaveAs(FileName: WideString; FileFormat: TXLSFileFormat): Integer;
function SaveAs(Stream: TStream);
function SaveAs(Stream: TStream; FileFormat: TXLSFileFormat): Integer;
FileName WideString. Строка, задающая имя файла для сохранения. Можно указать полный путь; если не указать, Workbook сохранит файл в текущей папке
FileFormat Необязательный TXLSFileFormat. Значение, указывающее формат файла для сохранения. По умолчанию xlExcel97
Stream TStream. Сохраняет Workbook в поток, указанный в параметре Stream

Описание

Вывод в файл XLS завершает сериализацию в соседнем промежуточном файле, прежде чем заменить целевой файл; неудачная фиксация оставляет существующий целевой файл нетронутым и сообщает захваченную нативную ошибку через диагностику книги

В файловых системах Windows с поддержкой POSIX rename замена может пройти успешно, пока остаётся открытым дескриптор метаданных или читателя, допускающий удаление; существующий читатель продолжает видеть исходный объект файла, а новый читатель целевого имени видит уже выполненную замену

Целевой файл должен разрешать доступ на удаление и совместное удаление (delete sharing), а цели только для чтения по-прежнему отклоняются; неудачная фиксация не повторяется, тогда как отсутствующие цели, пути reparse и неподдерживаемые файловые системы используют унаследованный путь фиксации, выбранный до замены

Атомарная замена защищает публикацию одного завершённого файла; она не обеспечивает изоляцию compare-and-swap от другого процесса, одновременно заменяющего то же имя

FileFormat может быть одной из следующих констант TXLSFileFormat
xlExcel97Формат MS Excel 97, 2000, XP, 2003
xlExcel5Формат MS Excel 5, 95
xlHTMLФормат HTML
xlRTFRich Text Format (RTF)
xlCSVФормат CSV
xlTextФормат TSV
xlUnicodeCSVФормат Unicode CSV
xlUnicodeTextФормат Unicode TSV

Пример

Создаёт рабочую книгу с одним листом и сохраняет её

Var
  Workbook: IXLSWorkbook;
begin
  Workbook := TXLSWorkbook.Create; {create new Workbook}
  Workbook.Worksheets.Add;
  {...}
  //Save книга as Excel 97 файл формат 
  Workbook.SaveAs('C:\book.xls');
  //Save книга as Excel 5-95 файл формат 
  Workbook.SaveAs('C:\book5.xls', xlExcel5);
  //Save книга as HTML 
  Workbook.SaveAs('C:\book.html', xlHTML);
  //Save книга as RTF файл 
  Workbook.SaveAs('C:\book.rtf', xlRTF);
  //Save active лист as comma separated значения (CSV)
  Workbook.SaveAs('C:\book.csv', xlCSV);
  //Save active лист as tab separated значения (TSV)
  Workbook.SaveAs('C:\book.tsv', xlText);
  //Save active лист as comma separated unicode значения (CSV)
  Workbook.SaveAs('C:\book.csv', xlUnicodeCSV);
  //Save active лист as tab separated unicode значения (TSV)
  Workbook.SaveAs('C:\book.tsv', xlUnicodeText);
end;
Сохраняет рабочую книгу в поле BLOB

var
  MS: TMemoryStream;
begin
  if not (ClientDataSet1.State in [dsInsert, dsEdit]) then
    ClientDataSet1.Insert;
  MS := TMemoryStream.Create();
  try
    FWorkbook.SaveAs(MS);
    ClientDataSet1Documents.LoadFromStream(MS);
  finally
    MS.Free;
  end;
  ClientDataSet1.Post;
end;