使用 Visual Basic 和互操作搜索 Excel 文档列

Posted

技术标签:

【中文标题】使用 Visual Basic 和互操作搜索 Excel 文档列【英文标题】:Searching Excel Document Columns with Visual Basic and Interop 【发布时间】:2014-06-26 07:39:26 【问题描述】:

我正在努力解决一个涉及互操作和 excel 的问题。 基本上,我有包含“标题”列的excel文件,列下面的行有数据。例如,年龄列下面将有 12、14 等。我是 Interop 的新手,我试图让用户输入他们希望从中提取数据的列标题的名称,所以如果他们输入“年龄”,它会发现年龄是列 B,例如然后提取前几行的所有数据。

我在 Google 上进行了广泛的搜索,但没有找到任何可靠的东西,所有这些都是面向上下文的,而且对于 Interop 来说是新手,这让这有点棘手。

到目前为止我得到了什么:

Public Sub getExcelData(ByVal directory As String)
    Dim excelAppFirstFile As Excel.Application = Nothing
    excelAppFirstFile = CreateObject("Excel.Application")
    Try
        excelAppFirstFile.Workbooks.Open(directory)
        Dim excelSheet As Excel.Worksheet = excelAppFirstFile.Worksheets(1)
    Catch ex As Exception
        MsgBox("There was a problem: " + ex.Message)
    End Try


End Sub

我知道这并不多,但我已经在范围等范围内转了一圈,不知道如何到达我需要的地方。 编辑: 我忘了补充一下,正在搜索的列名是一个名为字段的变量,它是由用户在早期阶段设置的。

【问题讨论】:

vb-helper.com/howto_net_read_excel.html 似乎是我要找的东西 【参考方案1】:

如果您只想读取 Excel 文件中的数据,我建议您使用 OleDb 而不是 interop(这样更快):

Dim filePath As String = "C:\Book1.xls"
Dim connectionString As String = (Convert.ToString("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=") & filePath) + ";Extended Properties=""Excel 8.0"";"
Dim connection As New OleDbConnection(connectionString)
Dim cmdText As String = "SELECT * FROM [Sheet1$]"
Dim command As New OleDbCommand(cmdText, connection)

command.Connection.Open()
Dim reader As OleDbDataReader = command.ExecuteReader()

If reader.HasRows Then
    While reader.Read()
        Console.WriteLine("0" & vbTab & "1", reader(0).ToString(), reader(1).ToString())
    End While
End If

【讨论】:

以上是关于使用 Visual Basic 和互操作搜索 Excel 文档列的主要内容,如果未能解决你的问题,请参考以下文章

Visual Basic 2017 操作Excel和word

如何在visual basic 2017中获取访问字段属性

Visual Basic 2017 操作Excel和word持续更新……

Visual Basic 2017 操作Excel和word持续更新……

Visual Basic函数“ GetRef”的Javascript等价物是什么?

Visual Basic 6.0/8.0/9.0 编程需要哪些软件工具?