使用 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 操作Excel和word持续更新……
Visual Basic 2017 操作Excel和word持续更新……