Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2012, 17:16   #1
MaGWaY_minsk
Пользователь
 
Регистрация: 17.10.2008
Сообщений: 35
Печаль C# и MS Excel

Доброго всем времени суток. Сегодня столкнулся с проблемой:
Приложение открывает MS Excel, заносит некоторые данные в ячейки, выводит страницу на печать и закрывает excel. Однако, после всего окно excel'я скрывается, но процесс остается висеть, в результате чего после печати страниц остается висеть по процессу за каждую.
Подскажите, как более грамотно закрыть Excel.


Код:

            excelapp = new Excel.Application();
            excelapp.Visible = false;
            //Получаем набор ссылок на объекты Workbook
            excelappworkbooks = excelapp.Workbooks;
            //Открываем книгу и получаем на нее ссылку
            excelappworkbook = excelapp.Workbooks.Open(Convert.ToString(System.IO.Directory.GetCurrentDirectory()) + @"\template\ticket.xls",
                               Type.Missing, Type.Missing, Type.Missing,
             Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
              Type.Missing, Type.Missing, Type.Missing, Type.Missing,
              Type.Missing, Type.Missing);
            //Если бы мы открыли несколько книг, то получили ссылку так
            //excelappworkbook=excelappworkbooks[1];
            //Получаем массив ссылок на листы выбранной книги
            excelsheets = excelappworkbook.Worksheets;
            //Получаем ссылку на лист 1
            excelworksheet = (Excel.Worksheet)excelsheets.get_Item(1);

            /* Ввод данных в ячейки */
            excelcells = excelworksheet.get_Range("C4", "C4");
            excelcells.Value2 = "a";
            /* Вывод страницы на печать */
            excelappworkbook.PrintOutEx();
            /* Закрытие книги */
            excelappworkbook.Close(false);
MaGWaY_minsk вне форума Ответить с цитированием
Старый 22.04.2012, 18:01   #2
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

попробуй добавить следующее:
Код:
excelapp = null;
excelappworkbook = null;
excelworksheet = null;
а вообще я когда то прогал на 6м билдере там у меня функция была выгрузки в excel, все нормально выгружала но так же процесс оставался висеть я просто добавил принудительный "Kill" процесса excel и все нормально было )
Код:
using System.Diagnostics;
 
 public void CloseProcess()
        {
            Process[] List;
            List = Process.GetProcessesByName("EXCEL");
            foreach (Process proc in List)
            {
                proc.Kill();
            }
        }
wm_leviathan вне форума Ответить с цитированием
Старый 23.04.2012, 14:01   #3
Петррр
Форумчанин
 
Аватар для Петррр
 
Регистрация: 02.09.2011
Сообщений: 336
По умолчанию

Код:
WordApplication.Quit()
Если ты не можешь найти то, ради чего стоит жить, лучше найти то, за что стоит умереть
Петррр вне форума Ответить с цитированием
Старый 23.04.2012, 14:01   #4
Петррр
Форумчанин
 
Аватар для Петррр
 
Регистрация: 02.09.2011
Сообщений: 336
По умолчанию

Точнее ExcelApplication
Если ты не можешь найти то, ради чего стоит жить, лучше найти то, за что стоит умереть
Петррр вне форума Ответить с цитированием
Старый 26.04.2012, 18:06   #5
lex0rg
Пользователь
 
Регистрация: 14.11.2009
Сообщений: 12
По умолчанию

У меня была похожая проблема, только при попытке закрыть процесс, рушился Excel.exe.
Пришлось отказаться от библиотеки Екселя и воспользоваться OLEDB.

Если все еще нужно, могу выложить код
lex0rg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
автоматизация поиска данных excel файла в другом excel файле с соответствующими пометками! ruotches Microsoft Office Excel 23 18.06.2013 10:24
Скорость исполнения макроса в Excel-2010 намного ниже, чем в Excel-2003 Павел+ Microsoft Office Excel 5 29.12.2010 03:28
Каким образом можно сделать таблицу Excel в ячейке Excel? Severny Microsoft Office Excel 3 08.10.2010 09:13
Как запретить запуск программы на VBA Excel 2003 в Excel 2007 kovalevskivf Microsoft Office Excel 2 15.05.2009 16:47
Формирование из excel в ASCII, у меня он формирует по одному клиенту а в Excel нескол Askat Общие вопросы Delphi 0 18.07.2007 06:28