Einzelne Zellen aus Datagridview auslesen/exportieren

  • VB.NET

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

    Einzelne Zellen aus Datagridview auslesen/exportieren

    Hallo,

    ich habe drei DataGridViews und möchte alle drei nach Excel exportieren. Am Anfang hatte ich eine for-Schleife benutzt aber damit schaffe ich es nicht alle drei auf einmal zu exportieren.
    Der Code davon sieht so aus:

    VB.NET-Quellcode

    1. With DataGridView1
    2. For Spalte As Integer = 0 To .Columns.Count - 1
    3. xlWorkSheet.Cells(1, Spalte + 1).Value = .Columns(Spalte).HeaderText
    4. xlWorkSheet.Cells(1, Spalte + 1).Font.Bold = True
    5. Next
    6. Anzahlzeilen = .Rows.Count
    7. If .AllowUserToAddRows = True Then
    8. Anzahlzeilen = Anzahlzeilen - 1 ' Leerzeile abziehen
    9. End If
    10. For Zeile As Integer = 0 To Anzahlzeilen - 1
    11. For Spalte As Integer = 0 To .Columns.Count - 1
    12. xlWorkSheet.Cells(Zeile + 2, Spalte + 1).Value() = .Rows(Zeile).Cells(Spalte).Value.ToString
    13. Next
    14. Next
    15. End With


    Falls einer mir dabei helfen kann, wie ich alle drei DGV per Schleife exportiert bekomme wäre das natürlich super.

    Deswegen will ich es per Hand machen:

    VB.NET-Quellcode

    1. xlWorkSheet.Cells(4, 2) = "Ladung"
    2. xlWorkSheet.Cells(4, 3) = "X"
    3. xlWorkSheet.Cells(4, 4) = "Y"
    4. xlWorkSheet.Cells(5, 2) = DataGridView1.???
    5. xlWorkSheet.Cells(5, 3) = DataGridView1.???
    6. xlWorkSheet.Cells(5, 4) = DataGridView1.???
    7. xlWorkSheet.Cells(5, 5) = DataGridView1.???
    8. xlWorkSheet.Cells(6, 2) = DataGridView1.???
    9. xlWorkSheet.Cells(6, 3) = DataGridView1.???
    10. xlWorkSheet.Cells(6, 4) = DataGridView1.???
    11. xlWorkSheet.Cells(6, 5) = DataGridView1.???



    Aber ich schaffe es nicht, die einzelnen Zellen auszuwählen. Habe wirklich alle möglichen Seiten mir angeschaut aber egal was probiert habe - es klappt einfach nicht.

    Über eure Hilfe bin ich wirklich dankbar.

    Viele Grüße
    Das Problem habe ich gelöst.
    Aber eine Frage hätte ich noch.

    Welche Werte der Schleife muss ich verändern damit die Schleife z.B. erst bei Zelle (5,5) der Excel Mappe startet?

    VB.NET-Quellcode

    1. With DataGridView1
    2. For Spalte As Integer = 0 To .Columns.Count - 1
    3. xlWorkSheet.Cells(1, Spalte + 1).Value = .Columns(Spalte).HeaderText
    4. xlWorkSheet.Cells(1, Spalte + 1).Font.Bold = True
    5. Next
    6. Anzahlzeilen = .Rows.Count
    7. If .AllowUserToAddRows = True Then
    8. Anzahlzeilen = Anzahlzeilen - 1 ' Leerzeile abziehen
    9. End If
    10. For Zeile As Integer = 0 To Anzahlzeilen - 1
    11. For Spalte As Integer = 0 To .Columns.Count - 1
    12. xlWorkSheet.Cells(Zeile + 2, Spalte + 1).Value() = .Rows(Zeile).Cells(Spalte).Value.ToString
    13. Next
    14. Next
    15. End With


    Diese Schleife fängt bei (0,0).

    Vielen Dank!
    Leider bin ein absoluter Anfänger. Soll ich For-Schleife damit ersätzen? Weiß nicht was ich damit machen soll.

    So sieht das bei mir im Moment aus:

    VB.NET-Quellcode

    1. Private Sub releaseObject(ByVal obj As Object)
    2. Try
    3. System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
    4. obj = Nothing
    5. Catch ex As Exception
    6. obj = Nothing
    7. Finally
    8. GC.Collect()
    9. End Try
    10. End Sub
    11. Private Sub SpeichernAlsExcelDateiToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SpeichernAlsExcelDateiToolStripMenuItem.Click
    12. If DataGridView1.RowCount > 0 Then
    13. Dim xlApp As Excel.Application
    14. Dim xlWorkBook As Excel.Workbook
    15. Dim xlWorkSheet As Excel.Worksheet
    16. Dim misValue As Object = System.Reflection.Missing.Value
    17. Dim Anzahlzeilen As Integer
    18. xlApp = New Excel.Application
    19. xlWorkBook = xlApp.Workbooks.Add(misValue)
    20. xlWorkSheet = xlWorkBook.ActiveSheet
    21. With DataGridView1
    22. For Spalte As Integer = 0 To .Columns.Count - 1
    23. xlWorkSheet.Cells(1, Spalte + 1).Value = .Columns(Spalte).HeaderText
    24. xlWorkSheet.Cells(1, Spalte + 1).Font.Bold = True
    25. Next
    26. Anzahlzeilen = .Rows.Count
    27. If .AllowUserToAddRows = True Then
    28. Anzahlzeilen = Anzahlzeilen - 1 ' Leerzeile abziehen
    29. End If
    30. For Zeile As Integer = 0 To Anzahlzeilen - 1
    31. For Spalte As Integer = 0 To .Columns.Count - 1
    32. xlWorkSheet.Cells(Zeile + 2, Spalte + 1).Value() = .Rows(Zeile).Cells(Spalte).Value.ToString
    33. Next
    34. Next
    35. End With
    36. Dim Ausgabepfad As String
    37. SaveFileDialog1.ShowDialog()
    38. Ausgabepfad = SaveFileDialog1.FileName & ".xlsx"
    39. xlWorkSheet.SaveAs(Ausgabepfad)
    40. xlWorkBook.Close()
    41. xlApp.Quit()
    42. releaseObject(xlApp)
    43. releaseObject(xlWorkBook)
    44. releaseObject(xlWorkSheet)
    45. Else : MsgBox("Keine Werte zum exportieren vorhanden.", MsgBoxStyle.Exclamation)
    46. End If
    47. End Sub