2017-09-12 2 views
0
Private Sub Button_Import_Click(sender As Object, e As EventArgs) Handles Button_Import.Click 
    Try 
     Dim MyConnection As OleDb.OleDbConnection 
     Dim Ds As System.Data.DataSet 
     Dim MyAdapter As System.Data.OleDb.OleDbDataAdapter 

     MyConnection = New System.Data.OleDb.OleDbConnection(String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\Users\matil\Desktop\KontaktDaten.xlsx';Extended Properties=Excel 8.0")) 
     MyAdapter = New System.Data.OleDb.OleDbDataAdapter("Select * from [KontaktDaten$]", MyConnection) 
     Ds = New System.Data.DataSet 
     MyAdapter.Fill(Ds) 
     Me.DataGridView_Kontakte.DataSource = Ds.Tables(0) 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 
End Sub 

In dem obigen Code zu laden, ich bin eine Excel-Datendatei in ein Datagridview zu importieren, aber ich mag es möglich machen, dass der Benutzer seine eigene Datenquelle in einer Last zu wählen Dateifenster. Wie kann ich das erreichen ?, Ich habe bereits versucht, meinen Code so zu ändern, aber ich bekomme immer den Fehler "Die Microsoft Access-Datenbank kann nicht öffnen oder in die Datei schreiben".OleDb Data Source Dateifenster

Dim Path As New OpenFileDialog() 
MyConnection = New System.Data.OleDb.OleDbConnection(String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 8.0", Path)) 
+0

einfach die Abfrage ändern. – muffi

+0

Kannst du mir vielleicht ein Beispiel zeigen? – matilarab

+0

Ich kann Ihnen kein Beispiel zeigen, weil ich Ihre Datenquelle/Spalten nicht kenne. Aber Sie haben oben selbst ein Beispiel eingegeben ('Select * from [KontaktDaten $]'). – muffi

Antwort

0

Um Ihren Kommentar zu beantworten, ist Ihr Problem wahrscheinlich einfach zu handhaben. Ich diesen Code verwenden, um einen Dateinamen zu erhalten:

Dim indlg As New OpenFileDialog 
    indlg.DefaultExt = "csv" 
    indlg.Filter = "Texte|*.txt|CSV-Files|*.csv|Alle Files|*.*" 
    indlg.Title = "Textdatei" 
    indlg.Multiselect = False 
    If indlg.ShowDialog <> DialogResult.OK Then 
     MessageBox.Show("Funktionsabbruch.", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information) 
     Exit Sub 
    End If 

In Ihrem Fall gibt es nur eine Zeile fehlt:

MyConnection = New System.Data.OleDb.OleDbConnection(String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & indlg.FileName & ";Extended Properties=Excel 8.0"))