我正在尝试从一个巨大的Excel文件中导入数据,以便在VB.Net DataGridView中使用。 我的问题是列名称出现在第4行,而列不是顺序的。 遗憾的是,编辑Excel数据库不是一种选择,因为组织中的许多其他工具都以其当前格式使用它。
这是我到目前为止所尝试过的,我真的很感激解决方案。
Public Sub GetTable()
Dim cmd As System.Data.OleDb.OleDbDataAdapter
Dim ds As New DataSet()
Dim q1, q2, q3, q4, q5, q6 As String
Dim cn As System.Data.OleDb.OleDbConnection
cn = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;" + "data source=PATH;Extended Properties=Excel 8.0;")
q1 = "select * from [2013$B4:D128]"
'q2 = "select * from [2013$E4:I128]"
'q3 = "select * from [2013$M4:M128]"
'q4 = "select * from [2013$O4:P128]"
'q5 = "select * from [2013$S4:S128]"
'q6 = "select * from [2013$U4:U128]"
cmd = New System.Data.OleDb.OleDbDataAdapter(q1, cn)
cn.Open()
cmd.Fill(ds, "Table1")
cn.Close()
Me.DataGridView1.DataSource = ds
Me.DataGridView1.DataMember = "Table1"
End Sub
我尝试在查询中使用UNION,但刚从Visual Studio 2013收到错误。
答案 0 :(得分:0)
跟进上面的评论。这是一个使用VBA / ADO的示例,但说明了我建议如何构建SQL的方法:
Sub Tester()
Dim oConn As New ADODB.Connection
Dim oRS As New ADODB.Recordset
Dim f As ADODB.Field
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ActiveWorkbook.FullName & _
";Extended Properties='Excel 8.0;HDR=Yes'"
oRS.Open "select * from [Data test$A4:E8] where false", oConn
For Each f In oRS.Fields
Debug.Print f.Name
Next f
oRS.Close
End Sub
如果检查VB.NET版本的输出,可以选择要包含在select语句中的字段名称。