Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
 Аватар для Aumi
20 / 36 / 14
Регистрация: 08.10.2015
Сообщений: 406

Обнаружен недостижимый код Interop.Excel

06.12.2017, 15:18. Показов 946. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,

Функция ниже определяет, что находится в ячейке А1: цифра или буква.
Процесс в диспетчере задач EXCEL.EXE не уничтожается. И это мешает в дальнейшем открывать любой файл экселя на компе.
При компиляции ошибок нет, но есть предупреждение :
Обнаружен недостижимый код
Не могу понять в чем проблема.

C#
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
using Excel = Microsoft.Office.Interop.Excel;
 
           public int FindHeaderFile(string data)  //определить наличие шапки
        {
 
 
            string workbookPath = data;
 
            Excel.Application xlApp = new Excel.Application();
            xlApp.ScreenUpdating = false;
            Excel.Workbook xlWB; //рабочая книга            
            Excel.Worksheet xlSht = new Excel.Worksheet();          
            Excel.Range xlR;
 
            string xlRBookID;
          
 
            xlWB = xlApp.Workbooks.Open(workbookPath); //название файла Excel
            xlSht = xlWB.Sheets[1]; //лист1
            xlR = xlSht.Range["A1"];
          
 
            object ddd = xlR.Value;
            string ggg = ddd.ToString();
            int flag = 0;
 
            if (Char.IsDigit(ggg, 1))
            {
                flag = 0;
            }
 
            if (char.IsLetter(ggg, 1))
            {
                flag = 1;
                xlRBookID = xlR.Value;       
            }
 
            return flag;
 
                
            releaseObject(xlApp);  //эти строчка и ниже выделены зеленым
            releaseObject(xlWB);
            releaseObject(xlSht);
            releaseObject(xlR); 
        }
releaseObject- функцию я нашла на просторах интернета. И она рабочая
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  //Освобождаем ресуры (закрываем Excel)
        void releaseObject(object obj)
        {
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                obj = null;
            }
            catch (Exception ex)
            {
                obj = null;
                MessageBox.Show(ex.ToString(), "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            finally
            {
                GC.Collect();
            }
        }
Проблема явно в первой функции, но уже несколько дней бьюсь и не понимаю, в чем проблема
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.12.2017, 15:18
Ответы с готовыми решениями:

Обнаружен недостижимый код в программе
Сегодня услышал интересную задачу от друга, решил попробовать его реализовать. Суть задачи в следующем: В небольшом отеле 10 комнат....

Warning CS0162: Обнаружен недостижимый код
Помогите пожалуйста. Не могу поянть почему так вроде обычный цикл: ругается на ++index for (int index = 0; index...

Обнаружен недостижимый код, как исправить?
var files = Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)); string...

5
 Аватар для Nalik
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330
06.12.2017, 15:25
Может быть стоит перенести return flag; с 38 строчки в конец метода?

Добавлено через 54 секунды
C#
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
46
using Excel = Microsoft.Office.Interop.Excel;
 
           public int FindHeaderFile(string data)  //определить наличие шапки
        {
 
 
            string workbookPath = data;
 
            Excel.Application xlApp = new Excel.Application();
            xlApp.ScreenUpdating = false;
            Excel.Workbook xlWB; //рабочая книга            
            Excel.Worksheet xlSht = new Excel.Worksheet();          
            Excel.Range xlR;
 
            string xlRBookID;
          
 
            xlWB = xlApp.Workbooks.Open(workbookPath); //название файла Excel
            xlSht = xlWB.Sheets[1]; //лист1
            xlR = xlSht.Range["A1"];
          
 
            object ddd = xlR.Value;
            string ggg = ddd.ToString();
            int flag = 0;
 
            if (Char.IsDigit(ggg, 1))
            {
                flag = 0;
            }
 
            if (char.IsLetter(ggg, 1))
            {
                flag = 1;
                xlRBookID = xlR.Value;       
            }
 
            
 
                
            releaseObject(xlApp);  //эти строчка и ниже выделены зеленым
            releaseObject(xlWB);
            releaseObject(xlSht);
            releaseObject(xlR); 
            return flag;
        }
0
 Аватар для Aumi
20 / 36 / 14
Регистрация: 08.10.2015
Сообщений: 406
06.12.2017, 15:44  [ТС]
Nalik, увы! не помогло
0
 Аватар для Nalik
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330
06.12.2017, 15:53
А ну я название темы прочитал и ответил только про недостижимый код.
С библиотекой по Exel не работал, но предполагаю, что нужно правильно закрывать задействованные ресурсы.
Мне кажется такой вариант не должен работать
C#
1
obj = null;
Должно быть что-то связанное с уничтожением объекта.
.Close();
.Dispose();

Сейчас может поищу ответ, если найду отпишусь)
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
06.12.2017, 15:59
Цитата Сообщение от Aumi Посмотреть сообщение
Процесс в диспетчере задач EXCEL.EXE не уничтожается.

потому что при ошибках, либо окончании работ Вам нужно вручную выходить из приложения, в каждой теме на просторах гугла об работе с interop есть код для этого, пока вы этого не сделаете процесс и будет висеть
1
 Аватар для Nalik
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330
06.12.2017, 16:00
Ну да, все верно. Посмотрите эту тему (кликабельно) и код ТС, там есть корректное закрытие:
C#
1
xlWB.Close(true); //закрываем книгу, сохраняя изменения
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.12.2017, 16:00
Помогаю со студенческими работами здесь

Ошибка при работе с ArrayList (Обнаружен недостижимый код)
Что значит ошибка: Обнаружен недостижимый код? Вылезает на строке (подчеркивает myArrList): myArrList.RemoveAt(0);

Interop.Microsoft.Office.Interop.Excel
Добрый день! Собственно есть Win10, Visual Studio 2019, есть MS Office 2007 с установленным Excel. При попытке подключиться к Excel...

Недостижимый код
Собственно имеется задание Создайте класс Hero персонажа компьютерной игры. Класс должен содержать следующие поля: • координаты x, y; ...

Работа с документами Excel без Microsoft.Office.Interop.Excel
всем добрый день все дело в том что для своих программ я использую БД Excel но! однако не все устанавливают на компьютере Office, да и...

Использование Interop Excel
Добрый день! Есть приложение, которое должно вносить определенные изменения в Excel файл. Ниже часть кода using System; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru