Copier un tableau excel vers une Database SQL
Bonjour je suis en train de travailler sur la copie d'un tableau Excel vers une database SQL dans un fichier mdf.
J'ai réussi à adapter un code qui copie copie bien les données.
Dans le fichier Excel, j'ai la ligne 1 qui sert de menu mais cela n'est pas gênant pour le fichier mdf, qui lui aussi a la premier ligne servant de menu.
La ligne 2 du fichier Excel correspond bien à la ligne 2 du fichier mdf.
Par contre, pour les colonnes j'ai un problème que je n'arrive pas à résoudre.
Le contenu de la colonne A du fichier Excel n’apparaît pas dans la première colonne du fichier mdf puis que celui-ci est remplacé par les numéros de ID.
Seul le titre indiqué dans la cellule A1 du fichier Excel va se placer dans la seconde colonne de la Database.
Au final j'ai donc un décalage entre les titres et le contenu des données dans la Database.
Quelqu'un pourrait-il me donner des explications ?
Merci d'avance.
Voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
Public Sub MajSP()
Dim SPxls As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & Form1.TextBox1.Text & "';Extended Properties=""Excel 12.0 Xml;HDR=Yes""")
SPxls.Open()
Dim query_excel As String = "Select * from [SP$]"
Dim cmd As OleDbCommand = New OleDbCommand(query_excel, SPxls)
Dim rd As OleDbDataReader
Dim SP As New SqlConnection()
Dim SPDatabase As String = "Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=" & Application.StartupPath & "\List_B3.mdf;Integrated Security=True"
SP.ConnectionString = SPDatabase
SP.Open()
Using bulkcopy As SqlBulkCopy = New SqlBulkCopy(SP)
bulkcopy.DestinationTableName = "dbo.tb_SP"
Try
rd = cmd.ExecuteReader
bulkcopy.WriteToServer(rd)
rd.Close()
SP.Close()
MsgBox("Mise à jour de la SP réussie", MsgBoxStyle.Information, "SP")
Form1.TextBox1.Text = ""
Catch ex As Exception
MsgBox("Mise à jour de la SP impossible")
End Try
End Using
End Sub |
Copier un tableau excel vers une Database SQL
Bon, je n'ai pas trouvé la solution pour décaler des données de 1 colonne en copiant dans la base.
Par contre, j'ai supprimé la colonne ID définitivement, ce qui fait que maintenant la colonne A du fichier Excel est bien rempli dans la première colonne de la table.
Je ne sais pas si l'absence de cette colonne a un impact mais pour l'instant j'ai au moins toutes les données.
J'ai déjà pu effectuer une recherche de donnée dans une colonne en fonction de la valeur dans une autre colonne et çà ne pose pas de problème.