2015-05-12 3 views
0

Я читаю столбце целых чисел из таблицы Excel в datagridview, и он просто не работает. Я пробовал два пути, один из способов использования цикла, а другой - использование OleDb. Код непосредственно перед трудной строкой использует OleDb для заполнения другого DGV одним столбцом от excel отлично, поэтому я не знаю, почему он не работает во второй раз. Вот что я получил: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 я создавал ячейку, когда я выполняю, но теперь я получаю исключение null ref в той же строке (вторая-последняя строка в методе 2). Я чувствую, что мы на правильном пути ... –

+0

Изменения не попали в сообщение - вам нужно добавить код, чтобы добавить столбец в DGV, и достаточно строк для размещения типа используемой адресации. Или добавьте столбец и используйте .Rows.Add (), который добавит строку с данными. – rheitzman

ответ

0

Я считаю, что нашел ответ на исправление метода 2, выше. Я не определил xlWsheet2.

Я все еще не уверен, почему метод 1 не работал.

Смежные вопросы