powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Не работает условие цикла while
4 сообщений из 4, страница 1 из 1
Не работает условие цикла while
    #38538638
Azeke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.
Мне необходимо найти в таблице Excel определенный товар. Я в цикле проверяю соответствие значению по полю с товарами, однако когда цикл начинается он ничего не находит хотя товар есть в таблице. Т.е. он даже не выполняет просмотр по строкам а доходит до условия while (...) и завершается программа.
Код: 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.
            OpenFileDialog openDialog = new OpenFileDialog();
            openDialog.FileName = "Книга1";
            openDialog.Filter = "Файл Excel|*.XLSX; *.XLS";
            openDialog.ShowDialog();
            try
            {
                objApp1 = new ApplicationClass();
                objBook1 = objApp1.Workbooks.Add(openDialog.FileName);
                objSheet1 = objApp1.ActiveSheet as Worksheet;
                excells = null;
                int row = 1;
                string nstr = "нет товара";
                string t = objSheet1.get_Range(String.Concat("A", row), String.Concat("A", row)).Value2.ToString().Trim();
                while (objSheet1.get_Range(String.Concat("A", row), String.Concat("A", row)).Value2.ToString().Trim().Equals(""))
                {
                    if (objSheet1.get_Range(String.Concat("A", row), String.Concat("A", row)).Value2.ToString().Trim() == "Марс")
                        nstr = row.ToString();
                    row++;
                }
                textBox1.Text = nstr;
            }
            catch (Exception ex)
            {
             MessageBox.Show("Ошибка: " + ex.Data + ex.Message, "Ошибка при считывании файла",
             MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
            finally
            {
                objBook1.Close(" ", Filename, null);
                objApp1.Quit();
                objSheet1 = null;
                objApp1 = null;
                GC.Collect();


Вот такая таблица с товарами
Товар Колич Цена
Сникерс 20 4000
Натс 10 2000
Марс 5 1000
Баунти 10 3000
Покупатель
Продавец
...
Рейтинг: 0 / 0
Не работает условие цикла while
    #38539008
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
 while (objSheet1.get_Range(String.Concat("A", row), String.Concat("A", row)).Value2.ToString().Trim().Equals(""))



а строка в условии когда-нибудь может быть равна "" ?
...
Рейтинг: 0 / 0
Не работает условие цикла while
    #38539089
Azeke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да я пытался написать цикл искать нужный товар до конца таблицы, т.е. когда ячейка будит пустая вот и написал "... .Equals(""))".
Вообще подсмотрел в гугле и переписал вот так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
....
                string nstr = "нет товара";
                int lastrow = objSheet1.Cells.SpecialCells(XlCellType.xlCellTypeLastCell).Row;
                for (int row=1;row<=lastrow;row++) 
                {
                    if (objSheet1.get_Range(String.Concat("A", row), String.Concat("A", row)).Value2.ToString().Trim() == "Марс")
                        nstr = row.ToString();
                }
                textBox1.Text = nstr;
            }
.............


Т.е. в начале нашел последную ячейку в листе Эксель затем запускаю цикл
Однако у меня выходит ошибка пишет, что SpecialCells должен иметь два аргумента. Хотя вот здесь используют один аргумент http://www.cyberforum.ru/csharp-net/thread538508.html.
...
Рейтинг: 0 / 0
Не работает условие цикла while
    #38539555
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Azekeда я пытался написать цикл искать нужный товар до конца таблицы, т.е. когда ячейка будит пустая вот и написал "... .Equals(""))".

ты написал обратное условие , в коде написано : цикл будет продолжаться пока значение в ячейку пустое
видимо оно сразу не пустое поэтому цикл сразу прекращается

ps почитай хелп по while
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Не работает условие цикла while
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]