Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
 Аватар для Spread
77 / 38 / 2
Регистрация: 07.01.2012
Сообщений: 414

Вывод информации из определённой строки листа Excel

15.06.2012, 17:55. Показов 3442. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
доброго времени суток!

VB.NET
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
Imports Microsoft.Office.Interop
Public Class Form1
 
    Dim oEx As New Excel.Application
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim i As Integer = 1 'Номер строки
        Try
            Do Until oEx.Range("A" & i).Value = "" 'Цикл выполняется до тех пор, пока в столбце "А" имеется запись
                If oEx.Range("A" & i).Value = TextBox1.Text Then 'Сравниваем с текстбоксом
                    If oEx.Range("B" & i).Value = TextBox2.Text Then
                        Label1.Text = "В системе"
                        Exit Sub
                    End If
                End If
                i += 1
                Label1.Text = "Не правильное Имя\Фамилия"
            Loop
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
 
     
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            oEx.Workbooks.Open("D:\Users\Рустам\Desktop\fio.xlsx")
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
 
End Class
вот код программы.
вводите имя и фамилию и нажимайте баттон если всё верно то появляется сообщение в лабле в системе если неправильно ввели то ошибку.

Вот такой вопрос: (это сдиржимое файла excel имя в A1 фамилия в B1)
Петя Коннов
Вася Пупкин

как сделать так если я например ввожу Петя Коннов мне выводилось информация из ячейки C1
а если Вася Пупкин то из ячейки C2. т.е для каждого именни своя С ячейка.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.06.2012, 17:55
Ответы с готовыми решениями:

Вывод в ListBox строки с листа Excel
Имеется TextBox, ListBox, кнопка. В TextBox вводится город, нажатием кнопки производится поиск, в ListBox выводится найденная строка. Дело...

Как извлечь текст примечания из определенной ячейки листа Excel?
Приложение работает с документом Excel. Как извлечь текст примечания из определенной ячейки листа Excel и поместить его в текстбокс на...

Копирование информации из листа Excel в форму.
Здравствуйте! Столкнулся с такой проблемой: Мне надо сделать так, чтобы после нажатия на кнопку вся информация, которая была на листе...

28
 Аватар для kOS_77
196 / 188 / 9
Регистрация: 14.06.2011
Сообщений: 495
15.06.2012, 20:26
Может быть сделать проще - если есть такой человек в списках то вывести по нему информацию.

Т.е. делаем поиск по книге экселя и если находим фио то выводим информацию из соседней ячейки. К примеру нашли мы Ваню Раздолбаева на ячейке A18 и выводим по нему информацию из ячейки B19 ? На мой взгляд будет как то правильней и понятней...

Добавлено через 25 минут
Признаю, затупил... Невнимательно посмотрел код. Там все это реализовано.

Чуть подправил: Имя и Фамилию вводим в первый тестбокс, во втором текстбоксе будет выводится информация о человеке, если ячейка с информацией будет пуста тогда в текстбоксе 2 будет - информация отсутствует.

VB.NET
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
Public Class Form1
 
    Dim Exc As Object = CreateObject("Excel.Application")
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        TextBox2.Text = ""
 
        Dim i As Integer = 1 'Номер строки
        Try
            Do Until Exc.Range("A" & i).Value = "" 'Цикл выполняется до тех пор, пока в столбце "А" имеется запись
                If Exc.Range("A" & i).Value = TextBox1.Text Then 'Сравниваем с текстбоксом
                    If Exc.Range("A" & i).Value = TextBox1.Text Then
                        Label1.Text = "В системе"
                        If Exc.range("B" & i).value = "" Then TextBox2.Text = "Информация отсутствует" Else TextBox2.Text = Exc.range("B" & i).value
                    End If
                    Exit Sub
                End If
 
 
                i += 1
                Label1.Text = "Не правильное Имя\Фамилия"
            Loop
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
 
 
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            Exc.Workbooks.Open("C:\Users\Константин\Desktop\БД.xlsx")
            Exc.visible = True
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
 
End Class
1
 Аватар для Spread
77 / 38 / 2
Регистрация: 07.01.2012
Сообщений: 414
15.06.2012, 23:41  [ТС]
всё работает, спасибо!
А как сделать что бы проверялось по ячейки А и Б а выводиось то что в Ц
0
 Аватар для kOS_77
196 / 188 / 9
Регистрация: 14.06.2011
Сообщений: 495
16.06.2012, 00:15
Вот так попробуй:


VB.NET
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
Dim Exc As Object = CreateObject("Excel.Application")
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        TextBox2.Text = ""
 
        Dim i As Integer = 1 'Номер строки
        Try
            Do Until Exc.Range("A" & i).Value = "" 'Цикл выполняется до тех пор, пока в столбце "А" имеется запись
                If Exc.Range("A" & i).Value = TextBox1.Text and Exc.Range("B" & i).Value = TextBox2.Text Then 'Сравниваем с текстбоксом
                    If Exc.Range("A" & i).Value = TextBox1.Text and If Exc.Range("B" & i).Value = TextBox2.Text Then
                        Label1.Text = "В системе"
                        If Exc.range("C" & i).value = "" Then TextBox3.Text = "Информация отсутствует" Else TextBox2.Text = Exc.range("C" & i).value
                    End If
                    Exit Sub
                End If
 
 
                i += 1
                Label1.Text = "Не правильное Имя\Фамилия"
            Loop
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
 
 
    End Sub
1
 Аватар для Spread
77 / 38 / 2
Регистрация: 07.01.2012
Сообщений: 414
16.06.2012, 00:59  [ТС]
не работает так!

ввожу в 1бокс имя во второй бок фамилию
нажимаю баттон а в текст боксе не показывает отчество. просто текст бокс2 очищается и всё
0
 Аватар для kOS_77
196 / 188 / 9
Регистрация: 14.06.2011
Сообщений: 495
16.06.2012, 10:53


Так вот эту строчку замени

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox2.Text = ""
TextBox3.Text = ""
1
 Аватар для Spread
77 / 38 / 2
Регистрация: 07.01.2012
Сообщений: 414
16.06.2012, 13:22  [ТС]
спасибо!
а почему если в чейки число то оно его не выводит?
0
 Аватар для kOS_77
196 / 188 / 9
Регистрация: 14.06.2011
Сообщений: 495
16.06.2012, 14:11
Должно выводить... надо смотреть...
1
 Аватар для Spread
77 / 38 / 2
Регистрация: 07.01.2012
Сообщений: 414
16.06.2012, 14:23  [ТС]
пишет: приведение строки к типу dooble является недопустимым.
0
 Аватар для kOS_77
196 / 188 / 9
Регистрация: 14.06.2011
Сообщений: 495
16.06.2012, 14:52
Держи рабочий вариант.

VB.NET
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
Public Class Form1
 
    Dim Exc As Object = CreateObject("Excel.Application")
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        TextBox3.Text = ""
 
        Dim i As Integer = 1 'Номер строки
        Try
            Do Until Exc.Range("A" & i).Value = "" 'Цикл выполняется до тех пор, пока в столбце "А" имеется запись
                If Exc.Range("A" & i).Value = TextBox1.Text And Exc.Range("B" & i).Value = TextBox2.Text Then 'Сравниваем с текстбоксом
                    Label1.Text = "В системе"
                    If Exc.range("C" & i).value = Nothing Then TextBox3.Text = "Информация отсутствует" Else TextBox3.Text = Exc.range("C" & i).value
                    Exit Sub
                End If
 
 
                i += 1
                Label1.Text = "Не правильное Имя\Фамилия"
            Loop
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            Exc.Workbooks.Open("C:\Users\Константин\Desktop\БД.xlsx")
            Exc.visible = True
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
 
 
End Class
1
 Аватар для Spread
77 / 38 / 2
Регистрация: 07.01.2012
Сообщений: 414
17.06.2012, 14:31  [ТС]
Это код Form1

VB.NET
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
47
48
Public Class Form1
 
 
    Dim Exc As Object = CreateObject("Excel.Application")
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Form2.TextBox3.Text = ""
 
        Dim i As Integer = 1 'Номер строки
        Try
            Do Until Exc.Range("A" & i).Value = "" 'Цикл выполняется до тех пор, пока в столбце "А" имеется запись
                If Exc.Range("A" & i).Value = TextBox1.Text And Exc.Range("B" & i).Value = TextBox2.Text Then
                    Form2.Label1.Text = "В системе"
                    If Exc.range("C" & i).value = Nothing Then Form2.Label14.Text = "Информация отсутствует" Else Form2.Label14.Text = Exc.range("C" & i).value
                    If Exc.range("D" & i).value = Nothing Then Form2.Label13.Text = "Информация отсутствует" Else Form2.Label13.Text = Exc.range("D" & i).value
                    If Exc.range("E" & i).value = Nothing Then Form2.Label12.Text = "Информация отсутствует" Else Form2.Label12.Text = Exc.range("E" & i).value
                    If Exc.range("F" & i).value = Nothing Then Form2.Label10.Text = "Информация отсутствует" Else Form2.Label10.Text = Exc.range("F" & i).value
                    If Exc.range("G" & i).value = Nothing Then Form2.Label11.Text = "Информация отсутствует" Else Form2.Label11.Text = Exc.range("G" & i).value
                End If
 
                Me.Hide()
                Form2.Show()
 
                Exit Sub
 
                i += 1
 
                Form2.Label1.Text = "Не правильное Имя\Фамилия"
            Loop
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
 
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
        Try
            Exc.Workbooks.Open("D:\Users\Рустам\Desktop\fio.xlsx")
            Exc.visible = False
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Application.Exit()
    End Sub
End Class
На Form2 только лаблы

Почему информацию выводит только того кто в на первом месте в excel а например кто на втором он только заходит от него а не выводит его информацию из других ячеек
0
 Аватар для kOS_77
196 / 188 / 9
Регистрация: 14.06.2011
Сообщений: 495
17.06.2012, 15:03
Не совсем понял что не так, можно поподробней ?
1
 Аватар для Spread
77 / 38 / 2
Регистрация: 07.01.2012
Сообщений: 414
17.06.2012, 21:27  [ТС]
в файле excel то изображенно на картинке!

когда я ввожу имя и пароль первого человека (ячейка А1 и Б1) то он входит и на форме два всё выводится нормально, но когда я ввожу имя и пароль второго, третьего и тд. человека, то он входит, но на второй форме уже не отображается его остальные данные.
Миниатюры
Вывод информации из определённой строки листа Excel  
0
 Аватар для kOS_77
196 / 188 / 9
Регистрация: 14.06.2011
Сообщений: 495
17.06.2012, 22:12
Исправь:

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       
            Do Until Exc.Range("A" & i).Value = "" 'Цикл выполняется до тех пор, пока в столбце "А" имеется запись
                If Exc.Range("A" & i).Value = TextBox1.Text And Exc.Range("B" & i).Value = TextBox2.Text Then
                    If Exc.Range("A" & i).Value = TextBox1.Text And Exc.Range("B" & i).Value = TextBox2.Text Then
                        Form2.Label1.Text = "В системе"
                        If Exc.range("C" & i).value = Nothing Then Form2.Label14.Text = "Информация отсутствует" Else Form2.Label14.Text = Exc.range("C" & i).value
                        If Exc.range("D" & i).value = Nothing Then Form2.Label13.Text = "Информация отсутствует" Else Form2.Label13.Text = Exc.range("D" & i).value
                        If Exc.range("E" & i).value = Nothing Then Form2.Label12.Text = "Информация отсутствует" Else Form2.Label12.Text = Exc.range("E" & i).value
                        If Exc.range("F" & i).value = Nothing Then Form2.Label10.Text = "Информация отсутствует" Else Form2.Label10.Text = Exc.range("F" & i).value
                        If Exc.range("G" & i).value = Nothing Then Form2.Label11.Text = "Информация отсутствует" Else Form2.Label11.Text = Exc.range("G" & i).value
                    End If
1
 Аватар для Spread
77 / 38 / 2
Регистрация: 07.01.2012
Сообщений: 414
17.06.2012, 22:35  [ТС]
не получается!
Миниатюры
Вывод информации из определённой строки листа Excel  
0
 Аватар для kOS_77
196 / 188 / 9
Регистрация: 14.06.2011
Сообщений: 495
17.06.2012, 22:39
ничего с ней делать не нужно, замени только эту часть кода и все.

Добавлено через 1 минуту
Я понял, тебя первая строчка ввела в заблуждение.

Вот так надо


VB.NET
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
       Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Form2.TextBox3.Text = ""
 
        Dim i As Integer = 1 'Номер строки
        Try
            Do Until Exc.Range("A" & i).Value = "" 'Цикл выполняется до тех пор, пока в столбце "А" имеется запись
                If Exc.Range("A" & i).Value = TextBox1.Text And Exc.Range("B" & i).Value = TextBox2.Text Then
                    If Exc.Range("A" & i).Value = TextBox1.Text And Exc.Range("B" & i).Value = TextBox2.Text Then
                        Form2.Label1.Text = "В системе"
                        If Exc.range("C" & i).value = Nothing Then Form2.Label14.Text = "Информация отсутствует" Else Form2.Label14.Text = Exc.range("C" & i).value
                        If Exc.range("D" & i).value = Nothing Then Form2.Label13.Text = "Информация отсутствует" Else Form2.Label13.Text = Exc.range("D" & i).value
                        If Exc.range("E" & i).value = Nothing Then Form2.Label12.Text = "Информация отсутствует" Else Form2.Label12.Text = Exc.range("E" & i).value
                        If Exc.range("F" & i).value = Nothing Then Form2.Label10.Text = "Информация отсутствует" Else Form2.Label10.Text = Exc.range("F" & i).value
                        If Exc.range("G" & i).value = Nothing Then Form2.Label11.Text = "Информация отсутствует" Else Form2.Label11.Text = Exc.range("G" & i).value
                    End If
        End If
Me.Hide()
                Form2.Show()
 
                Exit Sub
 
                i += 1
 
                Form2.Label1.Text = "Не правильное Имя\Фамилия"
            Loop
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
 
    End Sub
1
 Аватар для Spread
77 / 38 / 2
Регистрация: 07.01.2012
Сообщений: 414
17.06.2012, 22:45  [ТС]
проблема не исчезла

Добавлено через 1 минуту
я кажется понял почему так!

Dim i As Integer = 1 - это же номер строки из которой он выводит информацию, вот почему он и не выводит информацию из других строк

Добавлено через 1 минуту
как сделать что бы он выводил информацию из той строки в которой находится этот человек
0
 Аватар для kOS_77
196 / 188 / 9
Регистрация: 14.06.2011
Сообщений: 495
17.06.2012, 22:49
Ну не совсем так, верно, i это номер строки, далее идет сравнивание строки и если совпадений нет тогда i += 1 и цикл заново, только проблема в том что перед i += 1 стоит Exit Sub, И если совпадения в первой строке нет то доходя до Exit Sub мы выходим из процедуры так и не дождавшись i += 1

Добавлено через 30 секунд
Убери Exit Sub и все заработает.
1
 Аватар для Spread
77 / 38 / 2
Регистрация: 07.01.2012
Сообщений: 414
17.06.2012, 22:52  [ТС]
я поставил
VB.NET
1
2
3
i += 1
 
                Form2.Label1.Text = "Не правильное Имя\Фамилия"
перед Exit Sub
безрезультатно

Добавлено через 1 минуту
убрал Exit Sub. он так же заходит как и раньше но не выводит информацию из других ячеек
0
 Аватар для kOS_77
196 / 188 / 9
Регистрация: 14.06.2011
Сообщений: 495
17.06.2012, 22:53
Кинь проект я подправлю, я просто устал новые создавать
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.06.2012, 22:53
Помогаю со студенческими работами здесь

Чтение и запись информации с листа Excel
Ребята помогите пожалуста , у меня на форме 2 кнопки , кнопка-read и кнопка-write и ещё textbox. программа на vb.net 10 Как с помощью этих...

Console.Writeline - вывод строки определенной до определенной длины спереходом на новую строку
Добрый день. Существуют разные флаги для Console.Writeline. Например вот такой способ: Console.Write("{0,8}",...

Выбор определенной информации в Word и перенос ее в Excel
Доброго времени суток. В программировании новичек - прошу не судить строго). Подскажите пожалуйста-мне нужно написать программу, чтобы она...

Вывод определенной информации из dataGridView
Доброго времени. Новичок в изучении языка. Имеется некая БД с работниками. Задача вывести информацию о всех токарях(Turner) из dataGridView...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru