HotXLS Docs

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。一个指示要保存文件名称的字符串。可以包含完整路径;如果不包含,则工作簿会将文件保存在当前文件夹中
FileFormat 可选 TXLSFileFormat。一个指示要保存文件格式的值。默认为 xlExcel97
Stream TStream。将工作簿保存到 Stream 参数中指定的流

说明

XLS 文件输出在替换目标之前,先在一个同级的暂存文件中完成序列化;提交失败会让既有目标保持不变,并通过工作簿诊断报告捕获到的原生错误

在支持 POSIX rename 的 Windows 文件系统上,即使一个允许删除的元数据或读取器句柄仍处于打开状态,替换也可能成功;既有读取器继续看到原始文件对象,而以目标名新建的读取器看到的是完成替换后的文件

目标必须允许删除访问和删除共享,只读目标仍然被拒绝;提交失败不会重试,而缺失目标、reparse 路径和不受支持的文件系统使用替换前选定的旧式提交路径

原子替换保护的是一个已完成文件的发布;它不提供针对另一进程并发替换同名文件的 compare-and-swap 隔离

FileFormat 可以为下列 TXLSFileFormat 常量之一
xlExcel97 MS Excel 97,2000,XP,2003 文件格式
xlExcel5 MS Excel 5,95 文件格式
xlHTML HTML 文件格式
xlRTF 富文本格式 (RTF)
xlCSV 逗号分隔值文件格式 (CSV)
xlText 制表符分隔值文件格式 (TSV)
xlUnicodeCSV 逗号分隔的 Unicode 值文件格式 (CSV)
xlUnicodeText 制表符分隔的 Unicode 值文件格式 (TSV)

示例

此示例创建一个包含一个工作表的新工作簿,然后保存该工作簿

Var
  Workbook: IXLSWorkbook;
begin
  Workbook := TXLSWorkbook.Create; {创建新工作簿}
  Workbook.Worksheets.Add;
  {...}
  //将工作簿保存为 Excel 97 文件格式
  Workbook.SaveAs('C:\book.xls');
  //将工作簿保存为 Excel 5-95 文件格式
  Workbook.SaveAs('C:\book5.xls', xlExcel5);
  //将工作簿保存为 HTML
  Workbook.SaveAs('C:\book.html', xlHTML);
  //将工作簿保存为 RTF 文件
  Workbook.SaveAs('C:\book.rtf', xlRTF);
  //将活动工作表保存为逗号分隔值 (CSV)
  Workbook.SaveAs('C:\book.csv', xlCSV);
  //将活动工作表保存为制表符分隔值 (TSV)
  Workbook.SaveAs('C:\book.tsv', xlText);
  //将活动工作表保存为逗号分隔的 Unicode 值 (CSV)
  Workbook.SaveAs('C:\book.csv', xlUnicodeCSV);
  //将活动工作表保存为制表符分隔的 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;