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
3 Réponses :
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
Essayez d'installer Ace Fournisseur à partir du lien suivant
https://www.microsoft.com/en-us/download/confirmation.aspx?id=13255 p>
Comment importer Excel dans SQL Server, vérifier sur p> < p> https: / /www.red-gate.com/simple-Talk/dotnet/c-programming/office-Development-in-visual-studio/ p>
ou essayez d'utiliser cet extrait p> < Pré> xxx pré> p>
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
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 EM>
Microsoft.ace.Oledb.15.0 et modifié également mon fournisseur de chaînes de connexion de OLEDB 15.0 à 12.0. P>
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 P>
Les commentaires ne sont pas pour une discussion prolongée; Cette conversation a été Déplacé pour discuter .