Я читаю столбце целых чисел из таблицы 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
это получает мне ошибку «Индекс вне диапазона.
Почему я не могу заставить это работать?
Метод 2 требует, чтобы вы добавляли пустые строки, прежде чем пытаться их устранить. Вам также придется вручную добавить столбец назначения. – rheitzman
Спасибо @rheitzman, я сделал это и отредактировал свой пост выше. В DGV2 я создавал ячейку, когда я выполняю, но теперь я получаю исключение null ref в той же строке (вторая-последняя строка в методе 2). Я чувствую, что мы на правильном пути ... –
Изменения не попали в сообщение - вам нужно добавить код, чтобы добавить столбец в DGV, и достаточно строк для размещения типа используемой адресации. Или добавьте столбец и используйте .Rows.Add (