Импорт excel в datagridview с проверкой - PullRequest
0 голосов
/ 25 июня 2018

В настоящее время я могу импортировать файл Excel в мое представление данных с помощью кнопки.Я перепробовал много разных кодов, найденных онлайн для импорта, и наконец нашел тот, который работает, с небольшими штрихами.Самая большая проблема, с которой я сталкиваюсь, это «чтение» содержимого ячеек в файле Excel, и если есть определенный шаг проверки, который мне не нужен, программа не импортирует файл.

например, в столбце 1, если число меньше 0, импорт следует отменить.

или другой пример, если в столбце (который должен быть только цифрами) есть запись буквы, импорт следует отменить.

На других языках я могу изобразить это как простые операторы If, но я новичок в VB.

если бы кто-то мог направить меня в правильном направлении, это было бы очень признательно

Главная страница, которую я использовал, была; Импорт данных Excel в Datagridview с использованием VB.Net

мой текущий код;

    Dim dbconnect As OleDb.OleDbConnection
    Dim dta As OleDb.OleDbDataAdapter

    Dim dts As DataSet
    Dim excel As String
    Dim OpenFileDialog As New OpenFileDialog

    OpenFileDialog.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments
    OpenFileDialog.Filter = "All Files (*.*)|*.*|Excel files (*.xlsx)|*.xlsx|CSV Files (*.csv)|*.csv|XLS Files (*.xls)|*xls"

    If (OpenFileDialog.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK) Then

        Dim file As New FileInfo(OpenFileDialog.FileName)
        Dim FileName As String = OpenFileDialog.FileName
        ' Dim selectedrowcount As Integer = DataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected)

        excel = file.FullName
        dbconnect = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excel + ";Extended Properties='Excel 12.0;HDR=NO;IMEX=1'")
        dta = New OleDbDataAdapter("select * from [Feuil1$]", dbconnect)
        ' dta = New OleDbDataAdapter("select * from [Sheet1$]", dbconnect)

        dts = New DataSet

        dta.Fill(dts, "[Feuil1$]")

        ' dta.Fill(dts, "[Sheet1$]")
        DataGridView1.DataSource = dts
        DataGridView1.DataMember = "[Feuil1$]"
        dbconnect.Close()

        DataGridView1.DefaultCellStyle.Format = "N2"

                   DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter

        '   MsgBox("Data has been imported")

    End If

End Sub

1 Ответ

0 голосов
/ 25 июня 2018

Вот базовый пример из моего комментария.Обратите внимание, что команда закрытия была перемещена вверх.

В этом случае данные привязываются к сетке, только если данные отображаются так, как вы этого хотите.

' Fill Data Set and Close Connection (I Moved the Close)
dts = New DataSet
dta.Fill(dts, "[Feuil1$]")
dbconnect.Close()

' Loop Through the Data And Make Sure Its Good
Dim dataSuccess as Boolean = True
Dim rowIndex as Integer = 0
For Each row as DataRow in dts.Tables(0).Rows

    If Convert.ToInt32(row(0)) < 0 Then
        System.Windows.Forms.MessageBox.Show("Invalid Data in Row: " + rowIndex + " - 1st Column is Less Than Zero", "Data Import")
        dataSuccess = False
        Exit For
    End If

    rowIndex = rowIndex + 1
Next

' If Its Good, Bind It
If dataSuccess Then

    DataGridView1.DataSource = dts
    DataGridView1.DataMember = "[Feuil1$]"

End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...