2016-11-23 3 views
0

Я новичок в VB.Net, и я научился получать данные из Excel до DataGridView. Теперь может кто-нибудь помочь мне узнать, как получить данные Excel в текстовые поля?Как искать значение текстового поля в листе Excel и возвращать данные в другие текстовые поля

У меня есть форма с 6 текстовыми полями и кнопкой поиска. Когда я ввожу значение в textbox1 и нажмите на кнопку поиска, я хочу, чтобы найти файл Excel, который выбирается с помощью OpenFileDialog и сохраненную в destination1 строке

destination1 = destipath & Filename.Text & "_" & dtedate.ToShortDateString & ".xlsx" '& Format(TimeOfDay, "h.mm.ss tt") 

sheet1 Excel имеет ID, имя, отец, Мать, адрес и телефон. Форма VB.Net имеет 6 текстовых полей. Когда я ввожу, например, идентификатор 30 в текстовое поле 1, код должен искать ID 30 в столбце A. Если найдено, то текстовые поля 2-6 должны отображать имя, отец, мать, адрес, телефон.

Строки листа являются динамическими, но столбцы фиксированы. Я написал код, чтобы сделать это в Excel VBA, но я затрудняюсь написать код, чтобы сделать это в VB.Net?

Я пробовал это в VB.Net, но не идентифицировал LookIn и LookAt, как в Excel.

Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click 
    Dim xlappFile As Excel.Application = Nothing 
    Dim xlFile_WB As Excel.Workbook = Nothing 
    Dim xlFile_WS As Excel.Worksheet = Nothing 
    Dim xlFirstfile_WS1 As Excel.Worksheet = Nothing 
    Dim FoundRange As Excel.Range 
    Dim searchID As String 
    searchID = Textbox1.Text 

    xlFile_WB = xlappFile.Workbooks(destination1) ' destination1 is selected by 'user 
    MessageBox.Show(destination1) 
    xlFile_WS = xlappFile.Worksheets(1) 
    FoundRange = xlFile_WS.Cells.Find(What:=searchID, LookIn:=Excel.XlFindLookIn.xlFormulas, LookAt:=Excel.XlLookAt.xlWhole) 

    If FoundRange Is Nothing Then 
     textbox2.Text = "not found" 
     textbox3.Text = "not found" 
     textbox4.Text = "not found" 
     textbox5.Text = "not found" 
     textbox6.Text = "not found" 
    Else 
     textbox2.Text = FoundRange.Offset(0, 2).Value 
     textbox3.Text = FoundRange.Offset(0, 3).Value 
     textbox4.Text = FoundRange.Offset(0, 4).Value 
     textbox5.Text = FoundRange.Offset(0, 5).Value 
     textbox6.Text = FoundRange.Offset(0, 6).Value 
    End If 
End Sub 
+1

и результат был? –

+0

Результат в excel: он извлекает значения в столбцах b, c, d, e, f и отображается в текстовом поле2, текстовое поле3, текстовое поле4, текстовое поле 5, текстовое поле 6. Если текстовое поле 1 не найдено, все текс-боксы будут отображаться не найдены. Этот код был написан в excel, но я хочу узнать, как его реализовать в vb.net. – user3094480

+0

Я заменил код excel для реализации в VB.Net – user3094480

ответ

0

В отличие под Excel/VBA, в VB.NET вам нужно будет объем констант Excel от их имен, например:

FoundRange = xlFile_WS.Cells.Find(What:=searchID, LookIn:=Excel.XlFindLookIn.xlFormulas, LookAt:=Excel.XlLookAt.xlWhole) 
+0

Спасибо за руководство. Теперь у меня есть новая проблема в строке xlFile_WB = xlappFile.Workbooks (destination1) Необработанное исключение типа «Исключение System.NullReferenceException» произошло в WindowsApplication11.exe – user3094480

+0

xlAppFile по-прежнему не имеет значения в этой инструкции. Вам нужно назначить его '= New Excel.Application', использовать' xlAppFile.Workbooks.open' и т. Д. В основном, как в VBA, с немного отличающимся синтаксисом (т. Е. Без ключевого слова 'Set'). –

+0

Спасибо, что у меня есть это сейчас – user3094480

Смежные вопросы