好吧,我终于让这段代码工作了几个小时:
Dim path As String = OpenFileDialog1.FileName
Dim myDataset As New DataSet()
Dim strConn = New OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=" & path & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=1""")
Dim myData As New OleDb.OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn)
myData.Fill(myDataset)
DataGridView1.DataSource = myDataset.Tables(0).DefaultView
现在我想出来,我将尝试将数据放在特定位置。在我的应用程序中,我有一个设置有4列的datagridview。我想要做的是将excel文件的A列放在datagridview的第1列和datagridview的第2列中Excel文件的C列下。
所以替换:
DataGridView1.DataSource = myDataset.Tables(0).DefaultView
使用:
DataGridView1.columns(0) = myDataset.Tables(0).columns(0)
DataGridView1.columns(1) = myDataset.Tables(0).columns(2)
显然这不起作用,有些东西告诉我,我可能需要一个for循环来导入数据,但我从来没有从Excel文件中导入信息并使其变得更糟我以前从未使用过datagridviews所以我没有想法如何解决这个问题。
如果可以的话,我想做这样的事情:
For x = 1 To xldoc.rows.length - 1
DataGridView1.Item(0, x).Value = CType(xlDoc.Cells(0, x + 1), Excel.Range).Text
Next
答案 0 :(得分:2)
最终导致数据导入变得更加容易。我发布这个以防其他人遇到这个帖子。
If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
xLApp = New Excel.Application
xLBook = xLApp.Workbooks.Open(OpenFileDialog1.FileName)
xLSheet = xLBook.Worksheets("Sheet1")
For x = 1 To xLSheet.UsedRange.Rows.Count - 1
DataGridView1.Rows.Add()
DataGridView1.Item(0, x - 1).Value = xLSheet.Cells(1 + x, 1).value
DataGridView1.Item(1, x - 1).Value = xLSheet.Cells(1 + x, xLSheet.UsedRange.Columns.Count).value
Next
End If
不要打扰:
Dim myDataset As New DataSet()
Dim strConn = New OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=" & path & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=1""")
Dim myData As New OleDb.OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn)
答案 1 :(得分:0)
将其视为粗略,如下所示:
Excel工作簿=数据库
Excel工作表=表
每个Excel列=表列
每个Excel行=表格行
Excel单元格=特定行中的特定列值
如果您的Excel有列标题,那么这些是您的字段名称。现在更改SQL查询以选择所需的列并照常绑定。