tab15, совершенно прав. Проще сохранить в csv. Хотя нет никакого труда сохранить в ЛЮБОМ нужном Вам формате. Для этого нужно обратится к Excel как COM_объектуМожет просто сохранить в csv формате?
// Excel - сохранить как---------------------------------------------------------------------------- // тип файла, если 1 - в формате "xls" // 6 - в формате "csv" function SaveAs(aFileName : String; aFileType : Integer = 1) : boolean; var vMsExcel : OleVariant; begin _FileDelete(aFileName); vMsExcel := _OleObjectCreate(); // сохраянем книгу vMsExcel.Workbooks.Item[1].SaveAs(aFileName, aFileType); vMsExcel.Quit(); vMsExcel := nil; // убиваем процесс while Sys.WaitProcess('EXCEL').Exists do Sys.Process('EXCEL').Terminate(); // проверяем, существует ли сохраняемый файл; это и будет проверкой, что данная функция отработала нормально result := _FileExists(aFileName); end;
или
// Excel - сохранить как... // тип файла, если 1 - в формате xls, 6 - в csv function ExcelSaveAs(aFileName : String; aFileType : Integer = 1) : boolean; var vMsExcel : OleVAriant; p1 : OleVAriant; begin if aqFile.Exists(aFileName) then aqFile.Delete(aFileName); Delay(2000); // ожидание открытия окна MSExcel p1 := Sys.WaitProcess('EXCEL', 120000, -1); Delay(2000); // тут уж ничего неподелаешь ... непонятные тормоза независящие от процесса if not (p1.Window('XLMAIN', '*').Window('XLDESK').WaitWindow('EXCEL7', '*', 1, 120000).Exists) then begin Log.Error('Окно Excel не открылось. Тест продолжен не будет'); if Sys.WaitProcess('EXCEL').Exists then p1.Terminate(); CloseProcess; Runner.Stop(true); end; p1.Window('XLMAIN', '*').Minimize(); Delay(5000); vMsExcel := Sys.OleObject('Excel.Application'); vMsExcel.DisplayAlerts := False; vMsExcel.Workbooks.Item[1].SaveAs(aFileName, aFileType); vMsExcel.Displayalerts := 0; // типа отключить встроенные предупреждения Excel'я vMsExcel.Quit(); vMsExcel := nil; while Sys.WaitProcess('EXCEL').Exists do Sys.Process('EXCEL').Terminate(); if aqFile.Exists(aFileName) then begin Log.Message('Файл: ' + aFileName + ' - успешно сохранен.'); result := true end else begin Log.Error('Файл: ' + aFileName + ' - не сохранен.'); result := false; end; end;