Форум: "Основная";
Текущий архив: 2003.07.14;
Скачать: [xml.tar.bz2];
ВнизTExcelApplication, завершение процесса EXCEL.EXE Найти похожие ветки
← →
Pentium 5 (2003-07-01 12:51) [0]Как завершить процесс Excel после создания отчета? А то если моя прога еще работает, я не могу открыть созданный отчет. Если я прибиваю EXCEL.EXE в диспетчере задач все в порядке открывается. Заранее спасибо.
← →
clickmaker (2003-07-01 12:55) [1]ExcelApplication.Quit
← →
Pentium 5 (2003-07-01 13:09) [2]Ни фига не работает. В процессах EXCEL.EXE все равно присутствует. Из панели задач после выполнения Quit Excel исчезает.
← →
Bel (2003-07-01 13:17) [3]Чтобы иметь доступ к созданному отчёту необязательно завершать Excel. Достаточно закрыть файл отчёта. Что-то типа
Workbook.Close
.
← →
Pentium 5 (2003-07-01 13:20) [4]
ExcelApplication.Workbooks.Close(LOCALE_USER_DEFAULT);
ExcelApplication.Quit;
ExcelApplication.Free;
И не работает.
← →
Smashich (2003-07-01 13:30) [5]2 Pentium 5 (01.07.03 13:20)
ExcelApplication.Dissconnect;
← →
Pentium 5 (2003-07-01 13:36) [6]
ExcelApplication.Workbooks.Close(LOCALE_SYSTEM_DEFAULT);
ExcelApplication.Disconnect;
ExcelApplication.Quit;
ExcelApplication.Free;
ExcelApplication.Workbooks.Close(LOCALE_SYSTEM_DEFAULT);
ExcelApplication.Quit;
ExcelApplication.Disconnect;
ExcelApplication.Free;
Ни так ни так, EXCEL все равно висит в процессах.
Можно как-нибудь получить его Handle. Я б его сразу TerminateProcess"м убил.
← →
Smashich (2003-07-01 13:40) [7]2 Pentium 5 (01.07.03 13:36)
значит с ошибкой у тебя отчет формируется. и до вызовов quit. dissconnect просто не доходит дело.
← →
Pentium 5 (2003-07-01 13:47) [8]Под отладчиком проверял через F8. После Workbooks.Close(LOCALE_SYSTEM_DEFAULT); закр. книги, ExcelApplication.Quit закр. Excel, но в процессах висит. Меня это уже достало.
← →
Pentium 5 (2003-07-01 13:54) [9]Прикол вообще вот в чем. После Disconnect закр. Excel, а после Quit в диспетчере появляется второй экземпляр Excel, который удаляется после Free. Вот такая байда.
← →
Smashich (2003-07-01 13:56) [10]ExcelApplication.Workbooks.Close();
ExcelApplication.Quit;
ExcelApplication.Disconnect;
ExcelApplication.Free;
вот так надоть.
← →
Pentium 5 (2003-07-01 14:04) [11]2 Smashich
Попробуй ради прикола.
ExcelApplication := TExcelApplication.Create(Self);
ExcelApplication.ConnectKind := ckNewInstance;
ExcelApplication.Connect;
ExcelApplication.AutoQuit := true;
ExcelWorkbook2 := ExcelApplication.Workbooks.Add(EmptyParam,LOCALE_USER_DEFAULT);
ExcelWorkBook2.Activate(LOCALE_USER_DEFAULT);
ExcelWorksheet2 := ExcelApplication.ActiveWorkbook.ActiveSheet as ExcelWorkSheet;
ExcelApplication.Visible[LOCALE_USER_DEFAULT] := true;
ExcelApplication.ActiveWorkbook.SaveAs("file.xls",
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,xlNoChange,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,LOCALE_USER_DEFAULT);
ExcelApplication.Workbooks.Close(LOCALE_USER_DEFAULT);
ExcelApplication.Quit;
ExcelApplication.Disconnect;
ExcelApplication.Free;
Я не знаю в чем прикол. Но EXCEL живучий гад.
← →
Smashich (2003-07-01 14:18) [12]во первых можешь делать вот так:
ExcelApplication:= TExcelApplication.Create(Self);
ExcelApplication.ConnectKind := ckNewInstance;
ExcelApplication.Connect;
ExcelApplication.AutoQuit := true;
ExcelApplication.Workbooks.Add(EmptyParam,LOCALE_USER_DEFAULT);
ExcelApplication.Visible[LOCALE_USER_DEFAULT] := true;
ExcelApplication.ActiveWorkbook.SaveAs("file.xls",
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,xlNoChange,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,LOCALE_USER_DEFAULT);
ExcelApplication.Workbooks.Close(LOCALE_USER_DEFAULT);
ExcelApplication.Quit;
ExcelApplication.Disconnect;
ExcelApplication.Free;
и все будет путем.
а во вторых
var
ExcelApplication:TExcelApplication;
begin
ExcelApplication := TExcelApplication.Create(Self);
ExcelApplication.ConnectKind := ckNewInstance;
ExcelApplication.Connect;
ExcelApplication.AutoQuit := true;
ExcelWorkbook1.ConnectTo(ExcelApplication.Workbooks.Add(EmptyParam,LOCALE_USER_DEFAULT));
ExcelWorkBook1.Activate(LOCALE_USER_DEFAULT);
ExcelWorksheet1.ConnectTo(ExcelApplication.ActiveWorkbook.ActiveSheet as ExcelWorkSheet);
ExcelApplication.Visible[LOCALE_USER_DEFAULT] := true;
ExcelApplication.ActiveWorkbook.SaveAs("file.xls",
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,xlNoChange,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,LOCALE_USER_DEFAULT);
ExcelApplication.Workbooks.Close(LOCALE_USER_DEFAULT);
ExcelApplication.Quit;
ExcelApplication.Disconnect;
ExcelWorkbook1.Disconnect;
ExcelWorksheet1.Disconnect;
ExcelApplication.Free;
end;
← →
Pentium 5 (2003-07-01 14:42) [13]У ExcelWorkbook1 и ExcelWorksheet1 нет метода Disconnect.
← →
Smashich (2003-07-01 14:46) [14]ExcelWorksheet1: TExcelWorksheet;
ExcelWorkbook1: TExcelWorkbook;
в D6 все работает. лично компилил.
← →
Pentium 5 (2003-07-01 15:15) [15]Огромное спасибо!!!
Пиз##ц. Вместо ExcelWorksheet1: TExcelWorksheet поставил ExcelWorksheet1: ExcelWorksheet, вот в чем глюк.
Теперь все рулезно работает.
ЗЫ. Ты забыл
ExcelWorksheet1 := TExcelWorksheet.Create(Self);
ExcelWorkbook1 := TExcelWorkbook.Create(Self);
Еще раз большое спасибо.
← →
Smashich (2003-07-01 15:20) [16]2 Pentium 5 (01.07.03 15:15)
я не забыл - просто бросил на форму
ExcelWorksheet1 и ExcelWorkbook1:) - не люблю ими пользоваться
з.ы.
обращайся:)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.07.14;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.01 c