Excel Daten einlesen in Dataset und weiterverarbeiten

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Excel Daten einlesen in Dataset und weiterverarbeiten

    Hallo zusammen,

    ich möchte eine Excel-Datei in ein DataSet einlesen. Ich habe es mit dem OleDb - Adapter umgesetzt, habe aber noch ein paar Verständnis-Probleme ob dies zielführend für meine eigentliche Verwendung ist.

    Folgendermaßen habe ich es verstanden:
    Ich erstelle mit dem Code ein DataSet und fülle dies mit meinen Excel-Daten. Wird hier dann auch ein DataTable erstellt ? Bzw. Wird ein DataSet erstellt mit der DataTable "Stammdaten" ?

    Visual Basic-Quellcode

    1. Dim MyConnection As System.Data.OleDb.OleDbConnection
    2. Dim DtSet_Stammdaten As System.Data.DataSet
    3. Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
    4. Try
    5. MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & Programmverzeichnis & Dateiname_Stammdaten & "';Extended Properties=Excel 8.0;")
    6. MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [Tabelle1$]", MyConnection)
    7. DtSet_Stammdaten = New System.Data.DataSet
    8. MyCommand.Fill(DtSet_Stammdaten, "Stammdaten")
    9. MyConnection.Close()
    10. ' Daten übergeben
    11. Stammdaten_anzeigen.Close()
    12. Handmodus.daten = DtSet_Stammdaten
    13. Stammdaten_anzeigen.Stammdaten = DtSet_Stammdaten
    14. Catch
    15. MsgBox("Daten können nicht angezeigt werden! Ist der Name der Stammdaten-Datei korrekt und liegt diese im korrekten Verzeichnis?", MsgBoxStyle.Information)
    16. ' Fenster schließen
    17. Me.Close()
    18. End Try


    Daten in einem DataGridView anzeigen:

    Visual Basic-Quellcode

    1. Public Stammdaten As DataSet
    2. dgv_Stammdaten.DataSource = Stammdaten.Tables(0)


    --------
    Erklärung des eigentlichen Vorhabens:
    1. Daten der Excel-Datei einlesen (diese beinhalten: Teile-Nummer, Funktion ja/nein, Grenzwerte als Zahlen).
    2. Ständiger Zugriff auf die Daten -> z.B. Anzeigen der Spalte "Teile-Nummer" in einer ComboBox etc.

    Wie ich die Daten weiterverarbeiten kann, das heißt um irgendwo anzuzeigen, als Vergleicher zu nehmen etc. ist mir etwas schleierhaft.

    Später möchte ich dann noch die eingelesenen Excel-Daten ändern, speichern und wieder laden können.

    Ich habe schon viel gesucht und Videos angeschaut, es aber noch nicht hundertprozentig verstanden, ich denke da fehlt nicht mehr viel...

    Vielen Dank im Voraus!
    @STH_Wirl Willkommen im Forum. :thumbup:
    Kann es sein, dass Du in VB.NET programmierst? [Allgemein] VB.NET, VB6, VBA, VBS — Mit welcher Sprache programmiere ich eigentlich?
    Wenn ja, ändere bitte den Titel dieses Deines Threads.
    Die DataTable ist ein Member des DataSets.
    Eine Excel-Datei kommt in ein DataSet.
    Jede Tabelle in dieser Datei wird zu einer DataTable in diesem DataSet.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!
    @ VB1963:
    Vielen Dank! Ich habe es nun geschafft ein typisiertes DataSet zu erstellen und mit Daten aus Excel zu befüllen und dies auf der Seite in einem DataGridView oder Ähnlichem zu verwenden.

    Eines ist mir aber noch nicht ganz klar. Wenn ich die Daten der DataTable nun auf einer weiteren Form verwenden möchte, so muss ich diese von der einen zur anderen Form auch übergeben? Oder gibt es hier einen Trick?

    Daten an BindingSource des Hauptfensters übergeben:

    VB.NET-Quellcode

    1. StammdatenBindingSource.DataSource = dts
    2. StammdatenBindingSource.DataMember = dts.Stammdaten.TableName


    Zugriff auf die Daten von einem zweiten Fenster:

    VB.NET-Quellcode

    1. StammdatenBindingSource.DataSource = Hauptfenster.StammdatenBindingSource.DataSource
    2. StammdatenBindingSource.DataMember = Hauptfenster.StammdatenBindingSource.DataMember
    1. siehe diese beiden Threads: Post vom EdR, Thread mit Diskussion
    2.

    STH_Wirl schrieb:

    Hauptfenster.StammdatenBindingSource.DataMember
    :?:
    Da riech ich doch sofort RfGs Einspruch: Dialoge: Instanziierung von Forms und Aufruf von Dialogen und vielleicht noch der hier. Kurz gefasst: Das Subform sollte nie nie mittels jener Syntax auf das Hauptform zugreifen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.