用VB中的Excel数据填充DataGrid列

好吧,我终于得到这个代码工作几个小时后,工作:

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 

现在我明白了,我将尝试将数据放在特定的位置。 在我的应用程序,我有一个datagridview设置4列。 我想要做的是将excel文件的列A放在datagridview的第一列和datagridview的第二列中的Excel文件的C列下。

所以replace:

  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 

这最终导致数据更容易导入。 我张贴这个以防其他人遇到这个线程。

  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) 

大致思考如下:

  • Excel工作簿=数据库

  • Excel工作表=表

  • 每个Excel列=表列

  • 每个Excel行=表行

  • Excel单元格=特定行中的特定列值

如果您的Excel有列标题,那些是您的字段名称。 现在改变你的SQL查询来select你想要的列并像往常一样绑定。