markierte Zeile im Datagridview in TXT-Datei speichern

  • VB.NET

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

    markierte Zeile im Datagridview in TXT-Datei speichern

    Hallo zusammen,

    wie in der Überschrift schon steht, möchte ich gern eine markierte Zeile im Datagridview in einer definierten TXT-Datei
    speichern. Ist dies möglich, wenn ja wie? Könnte ich auch nur bestimmte Zellen dieser Zeile rauschreiben ? Ansonsten würde
    ich das TXT-File noch mit C++ bearbeiten..

    Benjamin
    Im DataGridView findest Du die selektierten Reihen in der Auflistung DataGridView.SelectedRows.

    Über die Auflistung DataGridView.Rows(intRowIndex).Cells kannst Du Zugriff auf jeden einzelnen Zelleninhalt nehmen ... z.B. DataGridView.Rows(5).Cells(1).ToString wirft den Inhalt der 2ten Zelle (Auflistung ist zero-based) in der 6ten Reihe als String zurück.

    So kannst Du bestimmten welche Zellen einer Reiher Du auslesen willst. Schreibe dann einfach die gewünschten Zeilen in einen String (kannst dafür auch den StringBuilder nutzen).

    Und über die folgende simple Methode kannst Du dann den String als eine Linie in ein Text-File schreiben:

    VB.NET-Quellcode

    1. Public Function nWrite2File(ByVal strFile As String, _
    2. ByVal strLine As String, _
    3. Optional ByVal blnAppend As Boolean = True) As Boolean
    4. Dim strTextFile As New System.IO.StreamWriter(strFile, blnAppend)
    5. Try
    6. strTextFile.WriteLine(strLine)
    7. strTextFile.Close()
    8. strTextFile = Nothing
    9. Return True
    10. Catch ex As Exception
    11. ' tu hier was Du im Fehlerfalle tun willst
    12. End Try
    13. End Function


    Also eigentlich alles mehr als simple.

    Gruß

    Rainer
    danke dir für deine schnelle Hilfe Rainer...

    Nur bin ich absoluter Laie in VB und muss notgedrungen etwas schreiben.

    Wollte das mit einem Button realisieren:

    VB.NET-Quellcode

    1. Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
    2. DataGridView.SelectedRows --> Was muss ich hier noch übergeben zum speichern ?
    3. nWrite2File --> Welche Werte muss ich übergeben ?
    4. End Sub
    5. Public Function nWrite2File(ByVal strFile As String, _
    6. ByVal strLine As String, _
    7. Optional ByVal blnAppend As Boolean = True) As Boolean
    8. Dim strTextFile As New System.IO.StreamWriter(strFile, blnAppend)
    9. Try
    10. strTextFile.WriteLine(strLine)
    11. strTextFile.Close()
    12. strTextFile = Nothing
    13. Return True
    14. Catch ex As Exception
    15. ' tu hier was Du im Fehlerfalle tun willst
    16. End Try
    17. End Function


    Sorry aber tu mich trotz googlens sehr schwer mit VB...
    Die Parameter für die Function musst du so mal eintragen. (Bsp.:)

    z.B. DataGridView.Rows(5).Cells(1).ToString wirft den Inhalt der 2ten Zelle (Auflistung ist zero-based) in der 6ten Reihe als String zurück.

    VB.NET-Quellcode

    1. dim Zelle2Reihe6 as string = DataGridView.Rows(5).Cells(1).ToString
    2. nWrite2File("c:\datei.txt", Zelle2Reihe6)


    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    super danke...

    nur leider unterlegt er DataGridView.Rows mit einem Wellenlinie sprich Fehler.

    VB.NET-Quellcode

    1. der verweis auf einen nicht freigegebenen member erfordert einen objektverweis


    Ich muss bestimmt DataGridView.Rows durch RichtigerName.Rows ersetzten , nur welchen ?
    fast jeden namen hatte ich probiert...Hätte ich aber selber drauf kommen müssen...

    Leider schreibt er nicht den Wert der Zelle in die Texdatei sondern nur folgendes:
    bei Reihe 5 und Celle 1

    VB.NET-Quellcode

    1. DataGridViewTextBoxCell { ColumnIndex=1, RowIndex=5 }


    und bei selectedrow:

    VB.NET-Quellcode

    1. System.Windows.Forms.DataGridViewSelectedRowCollection
    ?(
    hier nochmal der Code mit dem ich auf das obige Ergebnis komme...

    VB.NET-Quellcode

    1. Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
    2. Dim Auslesen As String = TestDataGridView.SelectedRows.ToString
    3. nWrite2File("c:\TEST.txt", Auslesen)
    4. End Sub
    5. Public Function nWrite2File(ByVal strFile As String, _
    6. ByVal strLine As String, _
    7. Optional ByVal blnAppend As Boolean = True) As Boolean
    8. Dim strTextFile As New System.IO.StreamWriter(strFile, blnAppend)
    9. Try
    10. strTextFile.WriteLine(strLine)
    11. strTextFile.Close()
    12. strTextFile = Nothing
    13. Return True
    14. Catch ex As Exception
    15. ' Später nachtragen
    16. End Try
    17. End Function
    Diese Stelle hier kann nicht funktionieren:

    VB.NET-Quellcode

    1. Dim Auslesen As String = TestDataGridView.SelectedRows.ToString


    Die Methode liefert eine Auflistung aller selektierten Rows. Auflistungen kannst Du gut mit For-Schleifen durchlaufen.

    Ändere die Stelle mal so ab:

    VB.NET-Quellcode

    1. For Each DGVRow As DataGridViewRow In TestDataGridView.SelectedRows
    2. Auslesen += DGVRow.Cells(0).ToString & " " & DGVRow.Cells(1).ToString & "|"
    3. Next


    Hier werden jetzt nur die Inhalte der Zellen 0 (also erste Zelle) und Zelle 1 (also zweite Zelle) in die String-Variable geschrieben. Die Einträge werden durch den Delimiter | voneinander getrennt damit sie zu unterscheiden sind.

    Gruß

    Rainer
    Danke Rainer für deine konsequente Hilfe...

    er schreibt mit folgendem Quellcode:

    VB.NET-Quellcode

    1. Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
    2. 'Dim Auslesen As String = TestDataGridView.SelectedRows.ToString
    3. Dim Auslesen As String = "HALLO"
    4. For Each DGVRow As DataGridViewRow In TestDataGridView.SelectedRows
    5. Auslesen += DGVRow.Cells(0).ToString & " " & DGVRow.Cells(1).ToString
    6. Next
    7. nWrite2File("c:\TEST.txt", Auslesen)
    8. End Sub
    9. Public Function nWrite2File(ByVal strFile As String, _
    10. ByVal strLine As String, _
    11. Optional ByVal blnAppend As Boolean = True) As Boolean
    12. Dim strTextFile As New System.IO.StreamWriter(strFile, blnAppend)
    13. Try
    14. strTextFile.WriteLine(strLine)
    15. strTextFile.Close()
    16. strTextFile = Nothing
    17. Return True
    18. Catch ex As Exception
    19. ' Später nachtragen
    20. End Try
    21. End Function


    folgendes in die Datei:

    VB.NET-Quellcode

    1. HALLODataGridViewTextBoxCell { ColumnIndex=0, RowIndex=5 } DataGridViewTextBoxCell { ColumnIndex=1, RowIndex=5 }DataGridViewTextBoxCell { ColumnIndex=0, RowIndex=4 } DataGridViewTextBoxCell { ColumnIndex=1, RowIndex=4 }DataGridViewTextBoxCell { ColumnIndex=0, RowIndex=3 } DataGridViewTextBoxCell { ColumnIndex=1, RowIndex=3 }DataGridViewTextBoxCell { ColumnIndex=0, RowIndex=2 } DataGridViewTextBoxCell { ColumnIndex=1, RowIndex=2 }DataGridViewTextBoxCell { ColumnIndex=0, RowIndex=1 } DataGridViewTextBoxCell { ColumnIndex=1, RowIndex=1 }DataGridViewTextBoxCell { ColumnIndex=0, RowIndex=0 } DataGridViewTextBoxCell { ColumnIndex=1, RowIndex=0 }


    Leider sind dies wieder nur, die von dir angeprochenen Auflistungen. ?(
    Au verdammt ... mein Fehler, hatte wohl noch nicht genug Koffein im Blut. ^^

    Muss so heissen:

    VB.NET-Quellcode

    1. For Each DGVRow As DataGridViewRow In TestDataGridView.SelectedRows
    2. Auslesen += DGVRow.Cells(0).Value.ToString & " " & DGVRow.Cells(1).Value.ToString & "|"
    3. Next


    Mit DGVRow.Cells(0).ToString spricht man natürlich nur die Zelle an und nicht deren Inhalt. Den Inhalt der Zelle bekommst du über die Eigenschaft Value raus und deswegen muss es natürlich so heissen: DGVRow.Cells(0).Value.ToString.

    Sorry, aber jetzt müsste es passen. ;)

    Gruß

    Rainer