0
votes

Importer des données Excel sur la table SQL Server à l'aide de l'application vb.net

J'ai trouvé plusieurs articles sur ce sujet, mais les problèmes sont différents. J'essaie d'importer des données à partir d'un fichier Excel 2016 dans SQL Server 2017 à l'aide d'une application VB.NET, de sorte que les utilisateurs finaux ne doivent pas nécessairement avoir installé SQL Server sur leurs machines. J'ai exécuté l'application en mode de débogage pour identifier le problème.

Encore une fois, j'ai lu des articles sur diverses instances liées à l'erreur suivante: p>

Le fournisseur 'Microsoft.ace.Oledb.15.0' n'est pas enregistré sur la machine locale p> BlockQquote>

My Code: P>

Dim TheData As DataTable = GetExcelData(OpenFileDialog1)

Private Function GetExcelData(File As OpenFileDialog) As DataTable
    Dim oleDbConnection As New OleDbConnection

    Try
        OpenOLEDBConnections(oleDbConnection, "Provider=Microsoft.ACE.OLEDB.15.0;Data Source=" & File.InitialDirectory & _
        File.FileName & "; ;Extended Properties=""Excel 12.0 XML;HDR=YES;""")

        Dim oleDbDataAdapter As OleDbDataAdapter = New OleDbDataAdapter("Select '' as ID, 'AL' as Supplier, LTRIM(RTRIM(GRADE)) AS GRADE, [ship date] as shipdate, LTRIM(RTRIM(coil)) AS coil, L15*1000 AS L15, H15*1000 AS H15 FROM [sheet1$] where COIL is not null group by GRADE, [SHIP DATE], COIL, L15, H15", oleDbConnection)
        Dim dataTable As DataTable = New DataTable()
        oleDbDataAdapter.Fill(dataTable)
        oleDbConnection.Close()

        Return dataTable
    Catch ex As Exception
        oleDbConnection.Close()

        Return Nothing
    End Try

End Function

Private Sub OpenOLEDBConnections(ByRef cnData As OleDbConnection, cnDataConstr As String)

    If Not cnData.State = ConnectionState.Closed Then cnData.Close()
    If cnData.State = ConnectionState.Closed Then
        cnData.ConnectionString = cnDataConstr
        cnData.Open()
    End If

End Sub


1 commentaires

Les commentaires ne sont pas pour une discussion prolongée; Cette conversation a été Déplacé pour discuter .


3 Réponses :


0
votes

Pas que c'est la balle d'argent, mais je n'aime pas le look de votre chaîne de connexion. Il semble y avoir un ";" pas à sa place. Essayez celui-ci xxx


0 commentaires

0
votes

Essayez d'installer Ace Fournisseur à partir du lien suivant

https://www.microsoft.com/en-us/download/confirmation.aspx?id=13255

Comment importer Excel dans SQL Server, vérifier sur < p> https: / /www.red-gate.com/simple-Talk/dotnet/c-programming/office-Development-in-visual-studio/

ou essayez d'utiliser cet extrait < Pré> xxx


11 commentaires

J'ai installé l'as et je reçois toujours la même erreur


Modifiez la chaîne de connexion comme ce $ @ "fournisseur = microsoft.ace.oledb.12.0; Source de données = {FileToread}; Propriétés étendues = 'Excel 12.0 XML; HDR = oui;'")) {


OpenOLEDBConnections (OLEDBConnection, $ @ "Fournisseur = Microsoft.Ace.Oledb.15.0; Source de données = & File.ImitialDirectory & _ File.filename &"; Propriétés étendues = 'Excel 12.0 XML; HDR = Oui;' ")


Remplacer ACE.OLEDB.15.0 avec ACE.OLEDB.12.0


Il montre toujours des erreurs dans le nouveau formatage. Pouvez-vous s'il vous plaît m'aider à le corriger


Avez-vous exploré mon exemple sur la porte rouge? Il y a aussi une solution sur GitHub.


Je n'ai pas essayé et j'essaie vos déclarations ici.


Quel type d'erreur recevez-vous maintenant? Ce n'est pas la même chose qu'auparavant.


Mon code était complètement dans vb.net et $ ne sont pas reconnus comme un caractère valide


Ceci est une nouvelle fonctionnalité dans VS2017 et fonctionne également avec VB.net. Vous pouvez utiliser String.Format à la place. Découvrez ma réponse mise à jour. Il y a un code vb.net complet à l'intérieur.


Merci. Je vais essayer ça



0
votes

Après que j'ai passé une journée et demi, je réussi à résoudre le problème en passant par le lien suivant et j'ai essayé l'option mentionnée par MANJU K GOWDA Lundi 14 mai 2012 12:14 Microsoft.ace.Oledb.15.0 et modifié également mon fournisseur de chaînes de connexion de OLEDB 15.0 à 12.0.

Pour être précis, tout en construisant la solution en mode de débogage ou de libération, conservez le gestionnaire de configuration à X86 au lieu de AnyCPU

 Entrez la description de l'image ici


0 commentaires