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 檔案輸出會在兄弟暫存檔中完成序列化,然後才取代目的地;提交失敗會讓既有目的地保持不變,並透過活頁簿診斷回報擷取到的原生錯誤

在支援 POSIX 重新命名的 Windows 檔案系統上,即使仍開著一個允許刪除的中繼資料或 reader handle,取代也可能成功;既有 reader 繼續看到原始檔案物件,而以目的地名稱新開的 reader 則看到完成的取代結果

目的地必須允許刪除存取與刪除共用,唯讀目標仍會被拒絕;提交失敗不會重試,而缺漏的目標、reparse 路徑與不受支援的檔案系統,則使用取代前選定的舊有提交路徑

原子取代保護的是單一已完成檔案的發布;它不提供與另一個處理序並發取代同名檔案時的比較並交換隔離

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