Inserer les donnees d une feuille excel dans une table sql

Signaler
Messages postés
1
Date d'inscription
mardi 1 août 2006
Statut
Membre
Dernière intervention
19 décembre 2006
-
Messages postés
10
Date d'inscription
mercredi 28 mai 2003
Statut
Membre
Dernière intervention
8 août 2008
-
salut a tous j essaye depuis 3 jours desesperemment a transporter les donnes d une feuille excel dans une table deja excitante dans sql 2000.ma feuille excel a 5 champ et ma table sql en a 9 mais les champ de ma feuille excel ont les memes noms que ma table sql.je suis confronter a 2 poblemes:
1.j ai des colonnes avec des dates dans ma feuille excel que lors de l insersion sont considerer coe des valeurs doubles et j ai cette erreur "valeur de type double ne peuvent pas etre converti en date"
2.lorsque je ne tiens pas compte de ses valeurs de dates c est a dire ke lors mon select je ne selectionne ke les valeur integer elles sont bien et bien inserer dans ma table sql mais pas dans les colonnes respestives,
voila le code: merci de bien vouloir m aider je suia desesperee.

Private Sub B_OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B_OK.Click

Dim oldbconstr As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source= c:\Kopie von Test-DWH-DB-2.xls;Extended Properties=Excel 8.0;"

OleConnection = New OleDb.OleDbConnection(oldbconstr)
Dim str As String = String.Format("select * from [arbeitstunden$] ", "T_Excel")
olecommand = New OleDb.OleDbCommand(str, OleConnection)

OleConnection.Open()

Dim worksheets As DataTable = OleConnection.GetSchema("tables")

' create dbdatareader to data worksheet und die werte von Excel TABELLE ZU HABEN UND DANN ZU CONVERTIEREN
Dim objdatareader As DbDataReader = olecommand.ExecuteReader()

objadapter = New OleDb.OleDbDataAdapter(str, OleConnection)

Dim ds As New DataSet

objadapter.Fill(ds, "T_EXCEL")

'sql sever connection string

Dim srtConnection As SqlConnection

srtConnection = New SqlConnection("Data Source=pc147;Initial Catalog=DWH_1;Integrated Security=True")

srtConnection.Open()

'bulk copy to sql server
Dim bulkcopy As SqlBulkCopy = New SqlBulkCopy(srtConnection)
bulkcopy.DestinationTableName = "T_Abrechnung"
bulkcopy.WriteToServer(objdatareader)

OleConnection.Close()

srtConnection.Close()

End Sub
l erreur survient en effet au niveau de bulkcopy.WriteToServer(objdatareader)
c est la qu on me dit que les valeurs doubles ne peuvent pas etre considerer comme des datatime

<!-- / message -->

1 réponse

Messages postés
10
Date d'inscription
mercredi 28 mai 2003
Statut
Membre
Dernière intervention
8 août 2008

essaie cette ligne

Dim oldbconstr As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data
Source= c:\Kopie von Test-DWH-DB-2.xls;Extended Properties=""Excel 8.0;HDR=No;IMEX=1"";"

HDR indique si entete present (HeaDeR), IMEX est lié au date

Sinon pour la correspondance fichier/table elle se fait  comme ca
For i As Integer = 0 To 25
            _bulk.ColumnMappings.Add(i, i)
Next

Programmeur