Повторная загрузка из 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5