Vb.net 在VB中用Excel数据填充DataGrid列

Vb.net 在VB中用Excel数据填充DataGrid列,vb.net,visual-studio-2010,excel,ado.net,oledb,Vb.net,Visual Studio 2010,Excel,Ado.net,Oledb,好吧,经过几个小时的努力,我终于得到了这个代码: 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=""

好吧,经过几个小时的努力,我终于得到了这个代码:

        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的第一列下,将excel文件的C列放在datagridview的第二列中

因此,请替换:

    DataGridView1.DataSource = myDataset.Tables(0).DefaultView
与:

显然,这是行不通的,有些东西告诉我,我可能需要一个for循环来导入数据,但我以前从未从Excel文件导入过信息,更糟糕的是,我以前从未使用过DataGridView,所以我不知道该怎么做

如果可以的话,我想这样做:

        For x = 1 To xldoc.rows.length - 1
            DataGridView1.Item(0, x).Value = CType(xlDoc.Cells(0, x + 1), Excel.Range).Text
        Next
大致设想如下:

  • Excel工作簿=数据库

  • Excel工作表=表格

  • 每个Excel列=表列

  • 每个Excel行=表格行

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


如果Excel有列标题,则这些是字段名。现在更改SQL查询以选择所需的列,并像往常一样进行绑定。

这使得导入数据更加容易。我发布此帖子,以防其他人遇到此帖子

    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)

数据从第8行开始,标题在第7行,数据可以是2行到15行。停止使用excel并切换回CSV会更容易吗?CSV似乎不那么令人头痛如果使用CSV是可能的,那就去做吧。否则,复制你的Excel文件,删除前6行(通过程序),保存文件,你就可以开始了。我解决了。我会在结束后发布我的答案。谢谢。关于GridView和手动添加每一行,我被困了4天,但你让我意识到在这个该死的excel表格中循环是多么容易。你的摇滚伙伴@Nefariis
    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)