Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];

Вниз

Проблема 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.039 c
4-1091094354
Егор_С
2004-07-29 13:45
2004.09.12
Появление формы поверх всех приложений


1-1093390412
массив
2004-08-25 03:33
2004.09.12
Ищу функции преобразования текста в паскалевые строчки и обратно


1-1093360476
appendix
2004-08-24 19:14
2004.09.12
синхронизация stringgrid


1-1092852228
JUS
2004-08-18 22:03
2004.09.12
Подскажите плиз, как сделать,чтоб при наведении на ComboBox1 он о


1-1093517056
Луарвик
2004-08-26 14:44
2004.09.12
Типизированые файлы:





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский