|
|
|
Завершение процесса Excel из Delphi
|
|||
|---|---|---|---|
|
#18+
Есть такая проблема: в Delphi-форме - объект OleContainer, в него выгружается содержимое рабочей книги Excel. После просмотра того, что выгрузилось, форма закрывается. Но вот вопрос - каким образом завершить процесс Excel, потому что после закрытия формы Excel.exe продолжает занимать память... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 00:01 |
|
||
|
Завершение процесса Excel из Delphi
|
|||
|---|---|---|---|
|
#18+
finally if not VarIsEmpty(XLApp) then begin XLApp.Quit; end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 09:59 |
|
||
|
Завершение процесса Excel из Delphi
|
|||
|---|---|---|---|
|
#18+
+ FreeAndNil(XLApp); после Quit ------------------------ С уважением, Denis Uskov ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 10:03 |
|
||
|
Завершение процесса Excel из Delphi
|
|||
|---|---|---|---|
|
#18+
Была у меня год назад такая же проблема. И всё то, что описали выше не работало. Что я только не делал: и Квит, и ФриЭндНил, и Клоус. В большинстве случаев не работало. Прошу не начинать сейчас бранить меня за правду! Было. ПРикольная ситуация, Екселей нет, а впроцессах их тьма. То я написал процедуру, которая перебирала все процессы с названием "Microsoft Excel" и у которых нет окон (тоесть следы Екселя). И потом ТерминейтПроцесс. К сожалению под рукой нет процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 11:27 |
|
||
|
Завершение процесса Excel из Delphi
|
|||
|---|---|---|---|
|
#18+
+ FreeAndNil(XLApp); после Quit да, не указал: XLAPP := Unassigned; Sheet := Unassigned; А вот как эта конструкция могла не работать? Где постоянство в жизни... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 11:46 |
|
||
|
Завершение процесса Excel из Delphi
|
|||
|---|---|---|---|
|
#18+
2 Andriy Tysh: Работать мог только Quit (не Close и не FreeAndNil). И обязательно перед ним надо было либо как-то закрывать все окна, либо выполнять DisplayAlerts:=False; Иначе Excel мог пытаться спросить Ваше мнение по поводу записи модифицированных таблиц (или оставшегося Clipboard с данными). В режиме OLE-сервера на этом все заканчивалось, Excel оставался висеть в процессах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 14:26 |
|
||
|
Завершение процесса Excel из Delphi
|
|||
|---|---|---|---|
|
#18+
А я знаю как! Терпите, сейчас найду, только проект откопаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 14:38 |
|
||
|
Завершение процесса Excel из Delphi
|
|||
|---|---|---|---|
|
#18+
Немножко соврал, не совсем то, что хочешь... Ну да ладно, про TOleContainer's, думаю, людям тоже интересно будет: - на форме TrepX_BaseReport лежат три компонента: Код: plaintext 1. 2. Так вот, установленные свойства: для exApp Код: plaintext 1. 2. для exWB Код: plaintext 1. для exWs Код: plaintext 1. Создается форма, в диалоге которой задаются параметры отчета: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Все самое главное - тут: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. Самая главная строчка - exApp.AutoQuit := True; Ну, а если аварии не было, то делаем Excel видимым, и позволяем юзеру закрывать его, когда вздумается! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 14:54 |
|
||
|
Завершение процесса Excel из Delphi
|
|||
|---|---|---|---|
|
#18+
Я вот так мочу: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 14:55 |
|
||
|
Завершение процесса Excel из Delphi
|
|||
|---|---|---|---|
|
#18+
KillTask('excel.exe'); - это классно, конечно... А если ты породил несколько сессий Excel-ей, а убить надо только те, при которых ошибка приключилась? Может, для твоего варианта запускать его (Excel) каждый раз с унакальными именами, а потом по ним убавать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 15:13 |
|
||
|
Завершение процесса Excel из Delphi
|
|||
|---|---|---|---|
|
#18+
В моем случае побарабану было...Просто создавал кучу файлов, а потом прибивал ексели. В моем случае из 30-40 открытых-закрытых процессов 1-2 обязательно оставались висеть в памяти. Просто не было времени разбираться в проблеме. А выходил я так Код: plaintext 1. 2. 3. Когда создается 1,2 файла таких проблем не было. Надо будет AutoQuit попробовать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 15:35 |
|
||
|
Завершение процесса Excel из Delphi
|
|||
|---|---|---|---|
|
#18+
В Variant где хранится ссылка на Word.Application (ну или Excel) присвоить EmptyParam, после убивания по Quit. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2004, 17:48 |
|
||
|
Завершение процесса Excel из Delphi
|
|||
|---|---|---|---|
|
#18+
Вариант vimana хотелось бы дополнить. Дело в том, что действительно, при "убийстви процессов" происходит терминэйт всех EXCEL (Это уже было отмечено MV). Как один из вариантов - это после успешного создания XlsApp и открытия книги, сразу запомнить ID процесса, который в свою очередь будет последним EXCELевским процессом. Для этого потребуется всего навсего переписать ф-ию KillTask так, чтобы она возвращала значение типа TProcessEntry32. Что-то типа: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Таким образом, вырубить процесс удастся по конкретному FProcessEntry32.th32ProcessID, типа: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 09:12 |
|
||
|
Завершение процесса Excel из Delphi
|
|||
|---|---|---|---|
|
#18+
Вариант vimana хотелось бы дополнить. Дело в том, что действительно, при "убийстви процессов" происходит терминэйт всех EXCEL (Это уже было отмечено MV). Как один из вариантов - это после успешного создания XlsApp и открытия книги, сразу запомнить ID процесса, который в свою очередь будет последним EXCELевским процессом. Для этого потребуется всего навсего переписать ф-ию KillTask так, чтобы она возвращала значение типа TProcessEntry32. Что-то типа: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Таким образом, вырубить процесс удастся по конкретному FProcessEntry32.th32ProcessID, типа: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 09:13 |
|
||
|
Завершение процесса Excel из Delphi
|
|||
|---|---|---|---|
|
#18+
Во извращенцы))) Закрытие делается одной командой(Quit вроде и есть, не помню, исходники дома есть). Сам раньше про нее не знал и мучился с кучей процессов, потом умные люди подсказали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2007, 17:23 |
|
||
|
Завершение процесса Excel из Delphi
|
|||
|---|---|---|---|
|
#18+
у меня вообщем такая же проблемка, убиваю процесс Quit ни*рена не получается. Вариант с убитем всех процессов не подходит, так как на машине пользователя возможно будут открыты другие экселевские документы. Kill f***** Excel process ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2007, 15:21 |
|
||
|
Завершение процесса Excel из Delphi
|
|||
|---|---|---|---|
|
#18+
Я думаю, убивать процесс - это извращение. Я сперва делал Quit и освобождал переменные. Все работало. Потом показалось некрасиво, неизвестно, когда пользователь наглядится на отчет, плюс неизвестно, сохранил он его, или нет, приходилось делать проверку на неосвобожденность переменных Excel'я при выходе из программы, начал делать так: Создаю отчет, сохраняю в профиле ползователя, закрываю Excel (OLE), открываю сохраненный отчет с помощью ShellExecute. Захочет - пересохранит. Чуть медленней, зато сердито. Никаких лишних процессов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2007, 15:53 |
|
||
|
Завершение процесса Excel из Delphi
|
|||
|---|---|---|---|
|
#18+
Создание отчета, есессно, при App.Visible := False ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2007, 16:05 |
|
||
|
Завершение процесса Excel из Delphi
|
|||
|---|---|---|---|
|
#18+
Уважаемые! Убился ужо в конец........................ Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. И все равно Excel висит(!) в процессах до закрытия приложения. Перепробывал всё и вся, гугл уже не знает что подсказать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 13:24 |
|
||
|
Завершение процесса Excel из Delphi
|
|||
|---|---|---|---|
|
#18+
Lizard17rus, У меня этот код отработал нормально и Excel-я в процессах нет. Вместо ..... я написАл Sleep(1000) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 13:36 |
|
||
|
Завершение процесса Excel из Delphi
|
|||
|---|---|---|---|
|
#18+
балиииииин((((((((((((((((((( Пока свою прогу не закрою - в процессах торчит. Embercadero XE3 А сам на чем компилил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 14:02 |
|
||
|
Завершение процесса Excel из Delphi
|
|||
|---|---|---|---|
|
#18+
Lizard17rus, Это стандартный код. Работал у меня на всех версиях до XE включительно. А если XL.DisplayAlerts := True? Ничего не показывает? Воспроизводится, если не делать Workbook := XL.WorkBooks.Open(FileName)? А на новом проекте тоже воспроизводится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 14:13 |
|
||
|
Завершение процесса Excel из Delphi
|
|||
|---|---|---|---|
|
#18+
Жесть(( Решил опробировать свой же приведенный код. В таком виде - да - все норм. как только пускаю с обработкой данных - привет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 14:15 |
|
||
|
Завершение процесса Excel из Delphi
|
|||
|---|---|---|---|
|
#18+
вот вся процедура полностью Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 14:19 |
|
||
|
Завершение процесса Excel из Delphi
|
|||
|---|---|---|---|
|
#18+
решил подключать обработку кусками и выяснить на каком этапе происходит затык. нашел.... Код: pascal 1. 2. сортировка..... еле-еле ее смог прикрутить, а она торчит. умеет кто делать сортировку по 3 столбцам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 14:29 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=38431268&tid=2038905]: |
0ms |
get settings: |
4ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
154ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 437ms |

| 0 / 0 |
