Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с Excel 
:(
    Опции темы
alexandrnv
Дата 3.11.2008, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 4.10.2008

Репутация: нет
Всего: нет



Что-то непонятное происходит с Excel (2003)
А именно... При некоторых условиях процесс excel.exe остается висеть в памяти.

Для начала, вот как я его закрываю:
Код

            // закрытие excel
             if (excelWorksheet != null) 
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(excelWorksheet);
                excelWorksheet = null;
            }
            
            if (excelBook != null)
            {
                excelBook.Close(false, null, null);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(excelBook);
                excelBook = null;
            }
            if (excelApp != null)
            {               
                excelApp.Quit();
                System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);                
                excelApp = null;
            }            
            GC.Collect();



И так он действительно выгружается из памяти, но не всегда.

Вот, для примера, простенький код, который выводит содержимое столбца А:

Код

for (i=1; i<10; i++) 
{     
     Response.Write( excelWorksheet.get_Range("A" + i.ToString(), missing).Value2 + "<br>" );
}

После выполнения - excel выгрузится из памяти. 
Но если в коде обращаться к какой-то ячейке дважды - то процесс будет висеть. Ума не приложу в чем дело?
Например, так процесс будет висеть:
Код

for (i=1; i<10; i++) 
{
     Response.Write( excelWorksheet.get_Range("A" + i.ToString(), missing).Value2 + "<br>" );
     Response.Write( excelWorksheet.get_Range("A" + i.ToString(), missing).Value2 + "<br>" );
  
}

Причем, при некоторых условиях бывает так, что к одинаковым ячейкам не обращался - все равно висеть остается. Что я делаю не правильно?


Это сообщение отредактировал(а) alexandrnv - 3.11.2008, 15:29
PM MAIL   Вверх
MaxWave
Дата 3.11.2008, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 8.3.2006

Репутация: нет
Всего: нет



По этой теме куча статей в Интернете - гугли!!!

Добавлено через 3 минуты и 12 секунд
и еще вот http://forum.vingrad.ru/topic-174837.html
PM MAIL   Вверх
alexandrnv
Дата 4.11.2008, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 4.10.2008

Репутация: нет
Всего: нет



Цитата(MaxWave @ 3.11.2008,  22:51)
По этой теме куча статей в Интернете - гугли!!!

и еще вот http://forum.vingrad.ru/topic-174837.html

Я и так гуглил. Да, куча статей. Но решения не нашел.

А вот цитата из темы, на которую ты дал ссылку 
Цитата

хотя лично мне это не помогло - пришлось смириться.


MaxWave если ты знаешь решение - то напиши, пожалуйста.
PM MAIL   Вверх
elbjarn
Дата 4.11.2008, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 13.4.2008
Где: Дубна

Репутация: нет
Всего: 3



это очень известная проблема, и касается она не только экселя, но и других ком-объектов офиса. утверждалось, что в 2007 офисе эта проблема решена, но по собственному опыту могу сказать - вранье. smile
PM MAIL ICQ   Вверх
MaxWave
Дата 4.11.2008, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 8.3.2006

Репутация: нет
Всего: нет



PM MAIL   Вверх
alexandrnv
Дата 4.11.2008, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 4.10.2008

Репутация: нет
Всего: нет




Всё это я уже видел. И пробовал. Всё равно не работает.
Надо будет на другой сборке офиса проверить - может поможет.

Кстати, процесс висит всегда один. Даже если я снова запускаю прогу - процессы не плодятся, а висит всего-лишь один. Думаю, это не такая уж большая беда. 
Короче, я пришел к выводу, что это глюк офиса и я тут не причем.

PM MAIL   Вверх
alexandrnv
Дата 5.11.2008, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 4.10.2008

Репутация: нет
Всего: нет



В рот мне ноги! Ведь для web-приложения мне это совсем не нужно. Проще использовать excel через OleDB. 
А вы что молчите? Сказали бы сразу, а то я как дурак столько времени потратил на изучение не нужной мне вещи =(
Всем спасибо. Тема закрыта.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0701 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.