Dokumentacja HotXLS

Metoda SaveAs

Zapisuje zmiany w skoroszycie do innego pliku lub strumienia. Zwraca 1 w przypadku sukcesu

Składnia

function SaveAs(FileName: WideString): Integer;
function SaveAs(FileName: WideString; FileFormat: TXLSFileFormat): Integer;
function SaveAs(Stream: TStream);
function SaveAs(Stream: TStream; FileFormat: TXLSFileFormat): Integer;
FileNameWideString. Łańcuch określający nazwę pliku do zapisania. Możesz podać pełną ścieżkę; jeśli tego nie zrobisz, Workbook zapisze plik w bieżącym folderze
FileFormatOpcjonalny TXLSFileFormat. Wartość określająca format pliku do zapisania. Domyślnie xlExcel97
StreamTStream. Zapisuje Workbook do strumienia określonego w parametrze Stream

Opis

Wyjście plików XLS kończy serializację w równoległym pliku etapowania przed podmianą celu; nieudany commit pozostawia istniejący cel nietknięty i zgłasza przechwycony natywny błąd przez diagnostykę skoroszytu

Na systemach plików Windows wspierających POSIX rename podmiana może się powieść, gdy uchwyt metadanych albo czytnika pozwalający na usunięcie pozostaje otwarty; istniejący czytnik nadal widzi oryginalny obiekt pliku, a nowy czytnik nazwy celu widzi ukończoną podmianę

Cel musi pozwalać na dostęp usunięcia i współdzielenie usunięcia, a cele tylko do odczytu nadal są odrzucane; nieudany commit nie jest ponawiany, podczas gdy brakujące cele, ścieżki reparse i nieobsługiwane systemy plików używają starszej ścieżki commitu wybranej przed podmianą

Atomowa podmiana chroni publikację jednego ukończonego pliku; nie dostarcza izolacji compare-and-swap względem innego procesu równocześnie podmieniającego tę samą nazwę

FileFormat może być jedną z tych stałych TXLSFileFormat
xlExcel97MS Excel 97, 2000, XP, 2003 format pliku
xlExcel5MS Excel 5, 95 format pliku
xlXMLFormat pliku XML
xlHTMLFormat pliku HTML
xlRTFFormat pliku RTF
xlXLSXFormat pliku XLSX (Open XML)
xlPDFFormat pliku PDF
xlUnicodeTextFormat pliku z wartościami Unicode rozdzielanymi tabulatorami (TSV)

Przykład

Ten przykład tworzy nowy skoroszyt z jednym arkuszem, a następnie zapisuje skoroszyt

Var
  Workbook: IXLSWorkbook;
begin
  Workbook := TXLSWorkbook.Create; {create new Workbook}
  Workbook.Worksheets.Add;
  {...}
  //Save Workbook as Excel 97 file format 
  Workbook.SaveAs('C:\book.xls');
  //Save Workbook as Excel 5-95 file format 
  Workbook.SaveAs('C:\book5.xls', xlExcel5);
  //Save Workbook as HTML 
  Workbook.SaveAs('C:\book.html', xlHTML);
  //Save Workbook as RTF file 
  Workbook.SaveAs('C:\book.rtf', xlRTF);
  //Save active Worksheet as comma separated values (CSV)
  Workbook.SaveAs('C:\book.csv', xlCSV);
  //Save active Worksheet as tab separated values (TSV)
  Workbook.SaveAs('C:\book.tsv', xlText);
  //Save active Worksheet as comma separated unicode values (CSV)
  Workbook.SaveAs('C:\book.csv', xlUnicodeCSV);
  //Save active Worksheet as tab separated unicode values (TSV)
  Workbook.SaveAs('C:\book.tsv', xlUnicodeText);
end;
Ten przykład zapisuje skoroszyt do pola 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;