在Excel中搜索文本框文本

时间:2020-09-18 12:56:23

标签: excel vb.net

我有一个包含两列的Excel文件。同样在Windows窗体中,我有3个文本框和一个按钮。 j =行 k =列 我想做的是 当我按下按钮时,如果我的textbox1.text =(j,k),则textbox2.text =(j,k + 1)和textbox3.text =(j + 1,k)。 我是通过互操作实现的,

Imports Excel = Microsoft.Office.Interop.Excel
Imports System.Runtime.InteropServices
Public Class Form1
    Dim arrayData(,) As String
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
                Try
            Dim xl As Excel.Application = New Excel.Application()
            Dim workbook As Excel.Workbook = xl.Workbooks.Open("C:\Users\tr100420\Documents\Visual Studio 2010\Projects\ExcelFunction\DB.xlsx")
            Dim sheet As Excel.Worksheet = workbook.Sheets(1)
            Dim Obj
            Dim dataRange As Excel.Range = sheet.Range("A1", "C500")
            Dim empNames As Excel.Range = sheet.Range("C1", "C5")
            ReDim arrayData(dataRange.Rows.Count, dataRange.Columns.Count)
            Dim j, k As Integer
            For j = 1 To dataRange.Rows.Count
                For k = 1 To dataRange.Columns.Count
                    arrayData(j - 1, k - 1) = dataRange.Cells(j, k).Value
                    If TextBox1.Text = Convert.ToString(dataRange.Cells(j, k).Value2) Then
                       TextBox2.Text = dataRange.Cells(j, k + 1).Value
                        TextBox3.Text = dataRange.Cells(j + 1, k).Value
                    End If
                Next k
            Next j
workbook.Close() : xl.Quit()
            System.Runtime.InteropServices.Marshal.ReleaseComObject(xl) : xl = Nothing
            System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook) : workbook = Nothing
            System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet) : sheet = Nothing

但是这种方法工作太慢。 是否有任何使它更快的解决方案,或者如果您有另一种方法来连接和阅读excel,请与我分享... 谢谢。。

0 个答案:

没有答案