Des excel vers sql 05

Soyez le premier à donner votre avis sur cette source.

Vue 6 815 fois - Téléchargée 751 fois

Description

Ce petit code permet de tirer des enregistrement dans un classeur Excel et les enregistrer dans une base de donnée Sql 05. Il suffit d'avoir une base de donnee sql avec les meme champs que ceux de excel
(nombre).
avec [achats$] comme le nom de la feuille de ce classeur

Source / Exemple :


Imports System.Data.SqlClient

Public Class Form1
    Public filename As String
    Dim ds As New System.Data.DataSet()
    Private Sub FromExcel()

        Dim cm As New OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;" & _
            "data source=" & filename & ";Extended Properties=""Excel 8.0;HDR=yes;"";")

        Dim SsEx As String = "select * from [achats$]"
        Dim sqlCom As New OleDb.OleDbCommand(SsEx, cm)

        cm.Open()
        Dim reader As OleDb.OleDbDataReader = sqlCom.ExecuteReader

        If reader.HasRows = True Then
            While reader.Read
                Dim newComTo As New SqlConnection("server=JONATHAN-PC;database=FromExcel;user id=sa;password=jonathan")

                Dim SS As String = "INSERT INTO Vente(Date,Bordereau,Devise,BILLET,Cours,CVenFRW,CLIENTVENDEUR,RNR)" & _
                                   "VALUES(@Date,@Bordereau,@Devise,@BILLET,@Cours,@CVenFRW,@CLINTVENDEUR,@RNR)"
                'Try
                Dim NewsqlComTo As New SqlCommand(SS, newComTo)
                With NewsqlComTo.Parameters
                    .Add("@Date", SqlDbType.NVarChar).Value = reader("Date").ToString
                    .Add("@Bordereau", SqlDbType.NVarChar).Value = reader("Bordereau").ToString
                    .Add("@Devise", SqlDbType.NVarChar).Value = reader("Devise").ToString
                    .Add("@BILLET", SqlDbType.Float).Value = reader("BILLET").ToString
                    .Add("@Cours", SqlDbType.Float).Value = reader("COURS").ToString
                    .Add("@CVenFRW", SqlDbType.Float).Value = reader("CVenFRW").ToString
                    .Add("@CLINTVENDEUR", SqlDbType.NVarChar).Value = reader("CLIENTVENDEUR").ToString
                    .Add("@RNR", SqlDbType.NVarChar).Value = reader("RNR").ToString
                End With

                Try
                    newComTo.Open()
                    NewsqlComTo.ExecuteNonQuery()
                Catch ex As Exception
                    MsgBox(ex.Message.ToString)
                    newComTo.Close()
                End Try

                newComTo.Close()
            End While
        End If
        filename = ""
        cm.Close()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        FromExcel()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        OpenFileDialog1.Title = "Select a File to Import"
        OpenFileDialog1.Multiselect = False
        OpenFileDialog1.Filter = "XLS format(*.xls)|*.xls"
        OpenFileDialog1.FilterIndex = 1
        OpenFileDialog1.FileName = ""
        OpenFileDialog1.ShowDialog()
        filename = OpenFileDialog1.FileName
        TextBox1.Text = OpenFileDialog1.FileName
    End Sub
End Class

Conclusion :


Merci à tous et bon codage.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
nsegi Messages postés 31 Date d'inscription mardi 22 juillet 2008 Statut Membre Dernière intervention 20 décembre 2013
11 août 2009 à 11:45
Merci PCPT,
l'idée du fichier excel m'a vraiment echappé...mais l'idee principale est là.
est bientot tout sera regler.

a+
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 48
11 août 2009 à 10:46
dommage que le code soit si peu générique

tu pourrais très bien créer le fichier excel de destination avec les noms de tables/feuilles en conséquence par exemple

de même le nom de la chaine de connexion en dur, il en faudrait peu pour tout au moins proposer le nom de l'ordinateur du client

++

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.