2015-05-12 157 views
0

我正在讀取從excel電子表格到datagridview的整數列,它只是不工作。我試過兩種方法,一種使用循環,另一種使用OleDb。在麻煩的行之前的代碼使用OleDb來完美地填充另一個與excel中的一列的DGV,所以我不知道爲什麼它第二次不起作用。下面是我的了:datagridview錯誤索引超出範圍vb.net

方法1 ---

Dim cn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""" & FormFile & """;Extended Properties=""Excel 12.0;HDR=YES;""") 

     'Fill dataviewgrid1 with element symbols, string' THIS WORKS PERFECTLY!! 
     da = New OleDbDataAdapter("select * from [" & sheetname & "$A13:A" & lrow & "]", cn) 
     ds = New System.Data.DataSet 
     da.Fill(ds) 
     DataGridView1.DataSource = ds.Tables(0) 

     'Fill dataviewgrid2 with compositions, string' THIS DOESN"T WORK, AND I DONT GET ANY ERROR MESSAGES. NOTHING HAPPENS. 
     da2 = New OleDbDataAdapter("select * from [" & sheetname & "$B13:B" & lrow & "]", cn) 
     ds2 = New System.Data.DataSet 
     da2.Fill(ds2) 
     DataGridView2.DataSource = ds2.Table 

重申以上,盡顯dgv1是成功的。填充dgv 2不成功,沒有錯誤彈出或任何東西。這是我試過的其他方式:

方法2:

DataGridView.ColumnCount = 1 
For xrow As Integer = 13 To lrow - 1 
      DataGridView.Rows.Add 
      DataGridView2.Item(0, xrow - 13).Value = xlWsheet2.Cells(xrow, 2).Value 
     Next 

這讓我的錯誤「索引超出範圍」。

爲什麼我無法得到這個工作?

+0

方法2將要求您在嘗試解決它們之前添加空行。您還必須手動添加目標列。 – rheitzman

+0

謝謝@rheitzman,我已經完成了,並編輯了我的帖子。在DGV2中,當我執行時創建了一個單元格,但現在我在同一行(方法2中的倒數第二行)上得到了空引用異常。我覺得我們正處在正確的軌道上...... –

+0

這些更改沒有使其成爲帖子 - 您需要添加代碼以將列添加到DGV,並有足夠的行來容納您正在使用的編址類型。或者添加一列並使用.Rows.Add(),這將添加一行數據。 – rheitzman

回答

0

我相信我找到了修正上面方法2的答案。我沒有定義xlWsheet2。

我還不確定爲什麼方法1不起作用。