【问题标题】:How to search textbox value in Excel sheet and return data to other textboxes如何在 Excel 工作表中搜索文本框值并将数据返回到其他文本框
【发布时间】:2016-11-23 09:58:19
【问题描述】:

我是 VB.Net 的新手,我已经学会了如何将数据从 Excel 获取到 DataGridView。现在谁能帮我学习如何将 Excel 数据放入文本框中?

我有一个带有 6 个文本框和一个搜索按钮的表单。当我在textbox1 中输入一个值并单击搜索按钮时,我想搜索一个由OpenFileDialog 选择并保存在destination1 字符串中的Excel 文件

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

Excel sheet1 包含 ID、姓名、父亲、母亲、地址和电话。 VB.Net 表单有 6 个文本框。例如,当我在 textbox1 中输入 ID 为 30 时,代码必须在 A 列中搜索 ID 30。如果找到,则文本框 2-6 必须显示姓名、父亲、母亲、地址、电话。

工作表行是动态的,但列是固定的。我已经在 Excel VBA 中编写了代码来执行此操作,但是在 VB.Net 中编写代码来执行此操作时遇到了麻烦?

我在 VB.Net 中尝试过,但没有像在 Excel 中那样识别 LookInLookAt

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

【问题讨论】:

  • 结果是?
  • excel中的结果是它获取col b,c,d,e,f中的值并显示在textbox2,textbox3,textbox4,textbox 5,textbox 6中。如果没有找到textbox 1 all tetxboxs 将显示未找到。这段代码是用 excel 编写的,但我想学习如何在 vb.net 中实现它
  • 我已经替换了excel代码在VB.Net中实现

标签: excel vb.net


【解决方案1】:

与 Excel/VBA 不同,在 VB.net 中,您需要通过命名空间来确定 Excel 常量的范围,如下所示:

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

【讨论】:

  • 感谢您的指导。现在我在 xlFile_WB = xlappFile.Workbooks(destination1) 行有一个新问题 WindowsApplication11.exe 中发生了“System.NullReferenceException”类型的未处理异常
  • xlAppFile 在此语句中仍然为空。您需要将其分配为=New Excel.Application,使用xlAppFile.Workbooks.open 等。非常类似于在VBA 中,语法略有不同(即没有Set 关键字)。
  • 谢谢我现在知道了
  • Dear A.S.H 如何只在 Col B 中搜索,并且只搜索到 lastrow 而不是 wholeXL 以提高速度?
猜你喜欢
  • 1970-01-01
  • 2023-02-22
  • 1970-01-01
  • 2022-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多