2012-03-26 118 views
1

好吧,我終於得到這個代碼勞苦小時後,開始工作:填充DataGrid列W/Excel數據在VB

 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列放在下面。

所以更換:

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

我解決它。完成後,我會發布我的答案。 – Nefariis 2012-03-26 23:12:39

回答

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

謝謝謝謝謝謝。我堅持了4天關於gridviews和手動添加每一行,但你讓我意識到循環這個該死的Excel表是多麼容易。你搖滾朋友@Nefariis – JT4U 2016-09-14 15:08:35

0

把它看成大致如下:

  • 的Excel工作簿=數據庫

  • Excel中工作表=表

  • 每個Excel列=表列

  • 每個Excel的行=錶行

  • Excel單元格=在一個特定行的特定列值

如果您的Excel有列標題,那些是你的字段名稱。現在改變你的SQL查詢來選擇你想要的列並像往常一樣綁定。

+0

數據從第8行開始,標題在第7行,數據可以是從2行到15行的任何地方。停止使用excel並切換回CSV會更容易嗎? CSV似乎更不容易讓人頭疼 – Nefariis 2012-03-26 21:23:04

+0

如果可以使用CSV,那就去吧。否則,複製Excel文件,刪除前6行(通過程序),保存文件,你應該很好去。 – Shrieks 2012-04-05 18:10:14