Повторная загрузка из Excel в DataGridView вызывает ошибку - Visual Basic .NET
Формулировка задачи:
Данные загружаю из Excel в DataGridView2 все нормально.
Далее необходимо загрузить в DataGridView2 новый файл из Excel.
Предварительно чистим:
При повторной загрузке не выходя из формы вызывает ошибку строка: da.Fill(dtt) в этом коде:
Решение задачи: «Повторная загрузка из Excel в DataGridView вызывает ошибку»
textual
Листинг программы
Public Class Form1
Dim dtt As DataTable
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
'Убрать тормоза таблицы
GetType(Control).InvokeMember("DoubleBuffered", _
System.Reflection.BindingFlags.SetProperty Or _
System.Reflection.BindingFlags.Instance Or _
System.Reflection.BindingFlags.NonPublic, _
Nothing, _
DataGridView1, _
New Object() {True})
With Me.DataGridView1 ' Параметры таблицы во 2 закладке
.DataSource = Nothing
.DataSource = LoadDataKey("путь к файлу", "имя листа")
.AutoGenerateColumns = True
.BorderStyle = BorderStyle.Fixed3D
.EditMode = DataGridViewEditMode.EditOnEnter
.AllowUserToOrderColumns = True
.AllowUserToResizeColumns = True ' Возможность перетаскивать столбец
.AllowUserToAddRows = False
.RowHeadersWidth = 55 ' Ширина столбца заголовка, самый левый столбец
' Меняем высоту строки заголовков
.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing
.ColumnHeadersHeight = 40
.Columns(0).Width = 200 ' Задаем ширину 1 столбца
.Columns(0).ReadOnly = True ' Делаем не редактируемым 1 столбец
.Columns(1).Width = 50
.Columns(2).Width = 80
' Выравнивание влево 1 столбца
.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
' Выравнивание по центру в столбце
.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.Refresh()
End With
End Sub
Private Function LoadDataKey(ByVal iPath As String, ByVal iShtName2 As String) As DataTable
Using conn = New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & iPath & "; Extended Properties=""Excel 12.0 Xml; HDR=YES"";")
Try : conn.Open() : Catch : MsgBox("Не знаю такой версии Excel") : Return Nothing : End Try
Dim command As New OleDb.OleDbCommand("Select * From [" & iShtName2 & "$]", conn)
Dim da As New OleDb.OleDbDataAdapter(command)
dtt = New DataTable : da.Fill(dtt)
conn.Close()
Return dtt
End Using
End Function
End Class