Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
76 / 37 / 2
Регистрация: 07.01.2012
Сообщений: 414
1

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

15.06.2012, 17:55. Просмотров 2943. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2012, 17:55
Ответы с готовыми решениями:

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

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

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

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

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

Т.е. делаем поиск по книге экселя и если находим фио то выводим информацию из соседней ячейки. К примеру нашли мы Ваню Раздолбаева на ячейке 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
76 / 37 / 2
Регистрация: 07.01.2012
Сообщений: 414
15.06.2012, 23:41  [ТС] 3
всё работает, спасибо!
А как сделать что бы проверялось по ячейки А и Б а выводиось то что в Ц
0
194 / 186 / 9
Регистрация: 14.06.2011
Сообщений: 495
16.06.2012, 00:15 4
Вот так попробуй:


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
76 / 37 / 2
Регистрация: 07.01.2012
Сообщений: 414
16.06.2012, 00:59  [ТС] 5
не работает так!

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


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

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

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
76 / 37 / 2
Регистрация: 07.01.2012
Сообщений: 414
17.06.2012, 14:31  [ТС] 11
Это код 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
194 / 186 / 9
Регистрация: 14.06.2011
Сообщений: 495
17.06.2012, 15:03 12
Не совсем понял что не так, можно поподробней ?
1
76 / 37 / 2
Регистрация: 07.01.2012
Сообщений: 414
17.06.2012, 21:27  [ТС] 13
в файле excel то изображенно на картинке!

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

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
76 / 37 / 2
Регистрация: 07.01.2012
Сообщений: 414
17.06.2012, 22:35  [ТС] 15
не получается!
0
Миниатюры
Вывод информации из определённой строки листа Excel  
194 / 186 / 9
Регистрация: 14.06.2011
Сообщений: 495
17.06.2012, 22:39 16
ничего с ней делать не нужно, замени только эту часть кода и все.

Добавлено через 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
76 / 37 / 2
Регистрация: 07.01.2012
Сообщений: 414
17.06.2012, 22:45  [ТС] 17
проблема не исчезла

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

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

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

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

Добавлено через 1 минуту
убрал Exit Sub. он так же заходит как и раньше но не выводит информацию из других ячеек
0
194 / 186 / 9
Регистрация: 14.06.2011
Сообщений: 495
17.06.2012, 22:53 20
Кинь проект я подправлю, я просто устал новые создавать
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.06.2012, 22:53

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.