Excel in DGW einlesen ohne MIRCOSOFT.ACE.OLEDB.12.0 möglich ?

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von StefanS0.

    Excel in DGW einlesen ohne MIRCOSOFT.ACE.OLEDB.12.0 möglich ?

    Hallo Forum

    Ich lese derzeit mit folgendem Code eine Excel-liste in ein DGV ein. Funktionierst soweit super.
    Aber das diese Tool auch von meinen Kollegen genommen werden soll bzw. wird, ist immer wieder das Problem aufgetauscht, dass MIRCOSOFT.ACE.OLEDB.12.0 Provider nicht auch dem lokalen Computer registriert ist.

    Mein Frage: Kann ich eventl. die Excel anders einlesen ? Ich brauche nur das DGV und muss nicht DB gebunden sein zur weiteren Verwendung oder kann ich in die Setup.exe das bereits mit einpacken damit es bei der Installation gleich mit Installiert wird.

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Sheetauswahlbtn.Click 'Excel über Sheet abfrage in DGW einlesen
    2. Try
    3. Dim Filename As String = Pfadfinderlabel1.Text.ToString
    4. Dim fi As New IO.FileInfo(Filename)
    5. Dim sheetName As String = ComboBox1.SelectedItem.ToString
    6. excel = fi.FullName
    7. con = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excel + ";Extended Properties=Excel 12.0;")
    8. dta = New OleDbDataAdapter("select * from [" & sheetName & "$]", con)
    9. dts = New DataSet
    10. dta.Fill(dts, "[" & sheetName & "$]")
    11. DGVSKliste.DataSource = dts
    12. DGVSKliste.DataMember = "[" & sheetName & "$]"
    13. con.Close()
    14. Btnloadstromkreis.BackColor = Color.Green
    15. SKlistepfad.Text = OpenFileDialog.SafeFileName
    16. ' End If
    17. If btnloadkonfig.BackColor = Color.Green AndAlso Btnloadstromkreis.BackColor = Color.Green Then
    18. Kovertbtn.Enabled = True
    19. End If
    20. SKliststyle()
    21. Catch ex As Exception
    22. MsgBox(ex.Message)
    23. con.Close()
    24. Exit Sub
    25. End Try
    26. End Sub
    Meinst du das How-To?
    Das ist doch noch sehr einfach zu verstehender C# Code.

    Du machst nen lesenden FileStream zu deiner Excel-Datei auf, erzeugst dann via ExcelReaderFactory.CreateReader(stream) einen Reader mit dem du dich dann Zeile für Zeile durch die Datei arbeiten kannst.
    Und mit der Funktion reader.AsDataSet() kannst du die Datei direkt in ein DataSet lesen lassen, in dem jedes Blatt eine DataTable darstellt.

    Edit: @Dksksm könntest du auch Vorteile gegenüber ExcelDataReader nennen? Im Grunde haben die beiden afaik dasselbe FeatureSet.
    Edit2: @Dksksm Nevermind

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „EaranMaleasi“ ()

    Ich würde die Daten nie in ein DGV einlesen, sondern immer in ein Dataset/DataTable, das dann als DGV.DataSource.
    Einlesen von Excel oder Ausgeben nach Excel würde ich immer EPPlus nehmen.

    EPPlus zum Lesen und schreiben von Excel Dateien, das tolle ist, du musst auf dem Rechner nicht mal Excel installiert haben!
    Die Daten gehören mindestens in eine Tablle (DataTable), ob Du nun streng typisierst arbeitest oder untypisiert, ist für den Zweck erst einmal egal.
    Wenn deine Excel-Tabellen immer den gleichen Aufbau haben, verwende den Designer vom VS zum Anlegen des DataSet und hier legts Du dann die Tabelle(n) an.
    Das ist immer streng typisiert und die kannst wunderbar deine Programmfunktionalitäten erweitern.

    Im Grunde ist es das, was @ErfinderDesRades empfiehlt und diverse Tuts dazu verfasst hat. Mit Datenbindung und allem.
    Hey Leute

    Danke für die Antworten ich werde dem nachgehen. :thumbup:

    Ich würde die Daten nie in ein DGV einlesen, sondern immer in ein Dataset/DataTable, das dann als DGV.DataSource.
    Danke ist mir bewusst und ich würde das auch so nicht mehr machen, jedoch ist das Tool aus meinen Anfangszeiten als Hobby Programmierer :D und soweit funktionierte es einwandfrei, daher werde ich es nicht mehr umschreiben.