Mapping excel-->Table

Signaler
Messages postés
20
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
23 juillet 2013
-
 steve25cent -
Bonjour,
Je souhaite mapper des données d'excel vers une table de ma base de données. je cherche un code vb.net pour vérifier que les types des données des colonnes correspondent aux type définir dans la table.
j'ai déjà établi un link avec excel en écrivant une procédure stockée qui qui charge les données excel dans la table.
Donc mon souci c'est valider la configuration des colonnes et des données. avant de charger
NB: Merci pour votre aide.

6 réponses

Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Salut

pas clair
je cherche un code vb.net pour vérifier que les types des données des colonnes correspondent aux type définir dans la table.


c'est au niveau du design
définis tes colonnes de ta feuilles excel
du meme type que ta table BDD
Bonjour,
je ne connais pas exactement le contenu de l'excel. donc ma table est la référence et je dois importer l'excel pour mapper les données qui correspondent et afficher celles qui ne correspondent pas.
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Salut
tu peux copier l'excel dans un dataset
et ensuite verifier le dataset

Imports System.Data.OleDb
Private dr As New DataSet
    Private Connection As New OleDbConnection
Private Sub Initdb2()
        Try
            Connection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;" + "data source=E:test.xls;Extended Properties=Excel 8.0;")
            Connection.Open()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Function GetDataFromExcel() As DataSet
        Dim sql As String
        Dim ObjetCommand As New OleDbCommand
        Dim da As OleDb.OleDbDataAdapter
        Dim ds As New DataSet
        Initdb2()
       'le sheet dans ton classeur doit etre nommé sheet1
        sql = "select * from [sheet1$] "

        Try
            ObjetCommand = New OleDbCommand(sql)
            ObjetCommand.Connection() = Connection
            da = New OleDbDataAdapter(ObjetCommand)
            Connection.Close()
            da.Fill(ds, "Table")
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

        Return ds
    End Function
  
     Private Sub Form1_Load(ByVal sender As Object, ByVal e As   System.EventArgs) Handles Me.Load
dr = GetDataFromExcel()
'il faut une sub pour verifier  dr 
end sub
Salut,
Merci pour cette réponse;
STP Comment écrire le sub pour vériffier le dr?
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
ce n'est pas encore au point

la premiere rangée du sheet n'est pas lu
si ton fichier xls est rempli de A1 à C4
le dataset se remplit de A2 à C4
pourquoi je ne sais pas

pour vérifier le datatype du dr
dr c'est un dataset qui contient un datatable nommé "Table"
ton datatable a des rangées et colonnes
on peut savoir le datatype de chaque "cellule"
il va faloir que tu compares avec le data type des champs de ta table

ce n'est pas encore au point
Private Sub CheckDataType()
        Dim r As DataRow
        Dim itemtypes As New List(Of String)
        For iterrow As Integer = 0 To dr.Tables("Table").Rows.Count - 1
            r = dr.Tables("Table").Rows(iterrow)
            For itercol As Integer = 0 To dr.Tables("Table").Columns.Count - 1
                itemtypes.Add(r(itercol).GetType.FullName)
            Next
            'ici il faut comparer chaque item de itemtypes avec le datatype de chaque champ de ta bdd.table 
        Next
    End Sub
Bonjour je te remercie car ça me va.
Pour la suite, j'ai besoin récupérer et de lier les noms des colonnes (1ère rangée) dans une dropdownList. Comment faire?
Merci