Import aus Excel und Reporting

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von VB1963.

    Import aus Excel und Reporting

    Hallo zusammen,
    ich möchte aus einer Exceldatei die Daten in ein Dataset laden und in einem Datagridview anzeigen lassen. Anschließend soll über den Button "Drucken" ein Bericht über den ausgewählten Datensatz erstellt werden.
    Folgendes funktioniert:
    Datenimport aus Excel in das Dataset
    Anzeige des Datasetinhaltes in einem Datagridview

    Was funktioniert nicht:
    Die Erstellung des Berichtes bzw. wird kein Inhalt im Bericht angezeigt (also die importierten 5 Spalten aus Excel).

    Was mache ich falsch. Ich habe das Projekt und die Exceldatei als Beispiel mal hochgeladen.
    Bin für jede Hilfe dankbar.
    Dateien
    • Umwandlung.zip

      (12,13 MB, 250 mal heruntergeladen, zuletzt: )

    MK_CGN schrieb:

    Was mache ich falsch.
    Du benutzt in deiner Form1 nicht dein erstelltes typisiertes Dataset, sondern befüllst deine Daten in ein per Code erstelltes, untypisiertes Dataset! Warum?
    In Form2 möchtest du dann dein typisiertes Dataset benutzen - aber tust nichts damit...
    Wie man eine Tabelle in einem Report an Daten bindet, kannst du im Teil3 meines Tutorials nachlesen...

    VB.NET-Quellcode

    1. Form2.ShowDialog()'absolutes NoGo!

    *) Option Strict OFF
    *) Generalimport von Microsoft.VisualBasic-Namespace in den Verweisen
    Visual Studio - Empfohlene Einstellungen

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

    @VB1963
    Danke für Deine Antworten. Ich habe das jetzt auf ein typisiertes Dataset umgestellt, hoffe ich zumindest. Leider wird trotzdem der Import der Exceldatei nicht in die Tbl1 des Dataset übernommen.
    Hier mein derzeitiger Code:

    Quellcode

    1. ​Private Sub btnLoadFile_Click(sender As Object, e As EventArgs) Handles btnLoadFile.Click
    2. Dim MyFilePath As String
    3. Dim openExcelFileDialog As New OpenFileDialog()
    4. openExcelFileDialog.InitialDirectory = "C:\"
    5. openExcelFileDialog.Filter = "Excel files (*.xlsx)|*.xlsx|(*.xls)|*.xls|All files (*.*)|*.*"
    6. openExcelFileDialog.FilterIndex = 1
    7. openExcelFileDialog.RestoreDirectory = True
    8. Try
    9. If openExcelFileDialog.ShowDialog() = DialogResult.OK Then
    10. MyFilePath = openExcelFileDialog.FileName
    11. Dim dts As New Dts_Datenimport
    12. Using connection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & MyFilePath & ";Extended Properties=Excel 12.0;")
    13. connection.Open()
    14. Using dataadapter = New OleDbDataAdapter("Select * From [Invoice1$]", connection)
    15. dataadapter.Fill(Dts_Datenimport.Tbl1) 'hier wird die Tbl1 im DataSet mit Daten gefüllt
    16. Me.Tbl1BindingSource.DataSource = dts
    17. Me.Tbl1BindingSource.DataMember = dts.Tbl1.TableName
    18. End Using
    19. End Using
    20. Else
    21. MyFilePath = ""
    22. MsgBox("Sie haben keine Datei ausgewählt")
    23. End If
    24. Catch ex As Exception
    25. MessageBox.Show(ex.Message)
    26. End Try
    27. End Sub


    Sobald das funktioniert, beschäftige ich mich mit Deinem Tutorial. Vielen Dank schon mal für Deine Hilfe.
    Danke - Fehler gefunden.

    Hier jetzt der funktionierende Code:

    Quellcode

    1. Private Sub btnLoadFile_Click(sender As Object, e As EventArgs) Handles btnLoadFile.Click
    2. Dim MyFilePath As String
    3. Dim openExcelFileDialog As New OpenFileDialog()
    4. openExcelFileDialog.InitialDirectory = "C:\"
    5. openExcelFileDialog.Filter = "Excel files (*.xlsx)|*.xlsx|(*.xls)|*.xls|All files (*.*)|*.*"
    6. openExcelFileDialog.FilterIndex = 1
    7. openExcelFileDialog.RestoreDirectory = True
    8. Try
    9. If openExcelFileDialog.ShowDialog() = DialogResult.OK Then
    10. MyFilePath = openExcelFileDialog.FileName
    11. Dim dts As New Dts_Datenimport
    12. Using connection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & MyFilePath & ";Extended Properties=Excel 12.0;")
    13. connection.Open()
    14. Using dataadapter = New OleDbDataAdapter("Select * From [Invoice1$]", connection)
    15. dataadapter.Fill(dts.Tbl1) 'hier wird die Tbl1 im DataSet mit Daten gefüllt
    16. Me.Tbl1BindingSource.DataSource = dts
    17. ' Me.Tbl1BindingSource.DataMember = dts.Tbl1.TableName
    18. End Using
    19. End Using
    20. Else
    21. MyFilePath = ""
    22. MsgBox("Sie haben keine Datei ausgewählt")
    23. End If
    24. Catch ex As Exception
    25. MessageBox.Show(ex.Message)
    26. End Try
    27. End Sub


    Jetzt kümmere ich mich um das Reporting aus Deinem Tutorial
    Danke für den nochmaligen Hinweis. Ist korrigiert.

    Den Report.rdlc habe ich jetzt auch erstellt.
    Jetzt lese ich gerade deine Tutorials, um herauszufinden, wie ich diesen per ButtonClick öffnen kann.
    Oder muß der definitv in einer Form integriert werden? Wie in meinem ersten Post?
    Schaue in Teil 9 von meinem Tutorial - da kannst du auch ohne Reportviewer direkt drucken...
    ReportViewer-Tutorial für Anfänger
    Wenn du deinen Report vor dem Druck ansehen möchtest, dann musst du natürlich den Reportviewer benutzen - für das ist er ja da.
    Ob du das in einer eigenen Form machen möchtest, bleibt dir überlassen.
    Nochmal eine Zwischenfrage:

    Müssen die Spalten im Dataset genauso heißen wie in der Exceltabelle oder gibt es die Möglichkeit zu sagen:

    Die Spalte in der Tabelle des Dataset heißt "Name" und da kommen die Werte aus der Exceltabelle Spalte A rein?