Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.12;
Скачать: CL | DM;

Вниз

Проблема Delphi-> Excel   Найти похожие ветки 

 
Andy   (2004-08-25 18:02) [0]

Не сталкивался ли кто-нибудь со следующей проблемой:
из проги работы с бд отчет выводится в excel, где открывается существующий шаблон и туда подставляются данные из проги. Так вот после того, как отчет напечат или просто просмотрен, excel закрывается, но в процессах вистит почему-то масса excel (равно числу раз запуска проги и генерирования отчета соотв-но). Что делать и как с этим бороться, подскажите плиз.


 
VMcL ©   (2004-08-25 18:07) [1]

Excel.Quit;
?


 
Andy   (2004-08-25 18:11) [2]

2 VMcL ©

>Excel.Quit;

Где это должно быть прописано? (excel подгружается по нажатию кнопки завершения обработки данных, которые туда и надо вставлять) ...


 
Sancho ©   (2004-08-25 18:54) [3]

Может быть у тебя где-то указатель на один из интерфейсов Excel не освобождается ?


 
Andy   (2004-08-25 18:55) [4]

Может быть... А как это узнать?


 
VMcL ©   (2004-08-25 18:57) [5]

>>Andy  (25.08.04 18:55) [4]

>А как это узнать?

Есть 2 варианта:
1. Поиграть в телепатов, авось кто-то угадает.
2. Привести исходный код.


 
Flagman ©   (2004-08-25 18:57) [6]

var
 Form1: TForm;
 MY_EXCEL: Variant;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
try
if MY_EXCEL then
MY_EXCEL.Quit;
except
end;
end;


 
ASMiD   (2004-08-25 19:00) [7]

А где это все создается?
А то закрываешь один раз, а сколько раз открываешь?


 
Sancho ©   (2004-08-25 19:04) [8]

Как ты получаешь доступ к Excel используя компоненты со вкладки "Servers" или App:= CreateOLEObject("Excel.Application")?


 
Andy   (2004-08-25 19:05) [9]

Создается:

procedure TForm.BtnClick(Sender: TObject);
XLApp: Variant;
...
XLApp:= CreateOleObject("Excel.Application");
...


 
ASMiD   (2004-08-25 19:09) [10]

А не пробовал посчитать под отладчиком, сколько раз туда попадаешь?


 
Flagman ©   (2004-08-25 19:11) [11]

>> А то закрываешь один раз, а сколько раз открываешь?

А кто мешает один раз открыть, а потом править?

if not MY_EXCEL then begin
MY_EXCEL:=CreateOleObject ("Excel.Application");
MY_EXCEL.....
.............
end else begin
MY_EXCEL.....
.............
end;


 
Sancho ©   (2004-08-25 19:11) [12]

Andy   (25.08.04 19:05) [9]
Помимо XLApp у тебя должны быть еще ссылки на интерфейсы Excel к примеру

var WS: Variant;
......
WS:= XLApp.ActiveWorkSheet;
//или что-то вроде того

Всем XLApp, WS и т.д. должно быть присвоено XLApp:= Unassigned сразу после того как тебе Excel стал не нужен.


 
ASMiD   (2004-08-25 19:13) [13]

Не понял.
Ты что под одну переменную решил открыть несколько екселей?


 
Sancho ©   (2004-08-25 19:22) [14]

ASMiD   (25.08.04 19:13) [13]
Если это мне, то одна переменная - указатель на интерфейс объекта Application, другая - Worksheet. Разве можно по другому ?


 
Flagman ©   (2004-08-25 19:24) [15]

> ASMiD

В том-то и дело, что один... Просто чистить страницу, перед использованием. Или, как вариант, новые странички добавлять.


 
Sancho ©   (2004-08-25 19:31) [16]

ASMiD   (25.08.04 19:13) [13]
Извиняюсь не понял, что это не мне :-))


 
YurikGL ©   (2004-08-25 23:07) [17]

Andy   (25.08.04 18:02)  
Копия в процессах остается тогда, когда остались ссылки на ексель. В конце надо говорить Unassigned;

Вот рабочий код после которого ничего не висит.

App : Variant;
app := CreateOleObject("Excel.Application");
try
 App.Visible := True;
 App.WorkBooks.Add;
 App.activesheet.range["b1","b5"].formula:="a";
 App.ActiveSheet.Range["c1","d3"].formula:="b";
 App.ActiveSheet.Range["a1","a3"].formula:="b";
finally
 App:=Unassigned;
end;

Кстати, если есть возможность т.е. работает безглючно, то ИМХО лучше пользоваться TExcelApplication



Страницы: 1 вся ветка

Текущий архив: 2004.09.12;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.023 c
1-1093529658
aleks-ran
2004-08-26 18:14
2004.09.12
DBGridEh: Считать значение футера


4-1091009479
Deker
2004-07-28 14:11
2004.09.12
Работа с приложениями в памяти


1-1093628027
Александр-
2004-08-27 21:33
2004.09.12
Показ Help.chm на определенном topice ?


14-1093385067
Gero
2004-08-25 02:04
2004.09.12
32-битных иконки


10-1037005934
Minibox
2002-11-11 12:12
2004.09.12
Midas (DCOM)-приложения не работают после установки VS.NET