Text aus Richtextbox wird leider Zeilenweise in CSV Datei übernommen

  • VB.NET
  • .NET 5–6

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Text aus Richtextbox wird leider Zeilenweise in CSV Datei übernommen

    Hallo Zusammen,

    ich habe ein Problem:

    Ich habe ein Formular, welches in eine CDV gespeichert wird.
    Jeder Eintrag Erhält in der CSV eine Zeile.

    VB.NET-Quellcode

    1. Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    2. Dim nameformular As String = Me.textbox1.text
    3. Dim vornameformular As String = Me.textbox2.text
    4. dim notizen as string = Me.richtextbox3.text
    5. Dim swriter As New StreamWriter(Me.TextBox7.Text, True)
    6. Dim datensatz As String
    7. datensatz = vbNewLine & id & ";" & nameformular & ";" & vornameformular & ";" notizen
    8. swriter.Write(datensatz)
    9. swriter.Close()
    10. end sub


    Geladen wird das ganze dann so:

    VB.NET-Quellcode

    1. Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    2. If File.Exists(Me.TextBox7.Text) Then
    3. Dim sreader As New StreamReader(Me.TextBox7.Text, Encoding.Default)
    4. Dim line As String
    5. Do While Not sreader.EndOfStream
    6. line = sreader.ReadLine
    7. If line = "" Or line = Nothing Then
    8. Continue Do
    9. End If
    10. Dim linesplitt() As String = line.Split(";")
    11. Dim nameformular As String = linesplitt(0)
    12. Dim vornameformular As String = linesplitt(1)
    13. Dim notizen As String = linesplitt(2)
    14. me.textbox1.text=nameformular
    15. me.tetxbxo2.text=vornameformular
    16. me.richtextbox1.text=notizen
    17. Loop
    18. sreader.Close()
    19. end if
    20. end sub



    Wenn ich jetzt aber in der Richtextbox mehrzeilig schreibe, schreibt der Code den Text auch mehrzeilig in die CSV Datei und dadruch knallt es beim einlesne der Datei.
    Weiß einer, wie ich das lösen kann.

    Sisco schrieb:

    in der Richtextbox mehrzeilig schreibe, schreibt der Code den Text auch mehrzeilig in die CSV Datei
    Genau das hast Du programmiert.
    Wie soll es denn sein?
    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).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich hatte die Hoffnung, dass gerade dieser Effekt nicht passiert.

    Wenn ich in der Richtextbox jetzt verschiedene Zeilen untereinander schreibe werden diese auch so in die CSV Datei übernommen.

    Quellcode

    1. Datensatz1:
    2. Textbox1 (Name) = Top
    3. Textbox2 (Vorname) = Sigrid
    4. Richtextbox1 (Notiz) zeile1 = Sekreätrin
    5. Richtextbox1 (Notiz) zeile2 = von 007


    Quellcode

    1. Datensatz2:
    2. Textbox1 (Name) = Blümchen
    3. Textbox2 (Vorname) = Benjamin
    4. Richtextbox1 (Notiz) zeile1 = Codewort
    5. Richtextbox1 (Notiz) zeile2 = Törö


    in der CSV kommt es jetzt so an:

    Quellcode

    1. Zeile1: Top;Sigrid;Sekreträrin
    2. Zeile2: von 007
    3. Zeile3: Blümchen;Benjamin;Cordwort
    4. Zeile4: Törö


    Bekommt man es hin, dass der Text der Richtextbox sinnvoll in die Zeilen geschreben wird und wieder ausgelesen werden kann.
    @Sisco Lesen bildet. ;)

    RodFromGermany schrieb:

    Wie soll es denn sein?
    Wie soll denn die CSV aussehen?
    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).
    Programmierfragen über PN / Konversation werden ignoriert!
    Naja, in einer CSV ist ja alle sin einer Zeile hintereinander geschrieben.

    was soll ich jetzt sagen? Keine Ahnung, wie es sinnvoll aussehen könnte und wie man es hinbekommt.
    Ich müsste ja vermutlich die Absätze durch ein anderes Zeichen ersetzen und dann diese zeichen beim einlesen weider splitten lassen.
    In der Hoffnung, dasss dieses Zeichen nicht andersweitig verwendet wird beim schreiben.
    eigentlich brauch man keine Zeichen zu ersetzen.
    Du musst halt richtiges csv in die csv-Datei reinschreiben, und sie auch wieder auslesen mit einem csv-Reader, der sich an das hält, was als csv-Format international spezifiziert ist.
    Demnach ist csv eine Tabellen-struktur, und wenn man einen Zell-Inhalt quoted, dann kann der Inhalt fast beliebigen Text enthalten.
    Also sowas

    Quellcode

    1. CsVZeile1Spalte1, "Zeile 1, Spalte2", "Zeile 1, Spalte3
    2. mit Zeilumbruch", Zeile1Spalte4
    ist gültiges csv, und zwar nur eine Zeile.
    Solch wird etwa vom Microsoft.Visualbasic.TextFieldParser problemlos eingelesen.
    @Sisco Ich hätte meine Frage auch nicht beantwortet. X(
    Mit RichTextBox.Lines hast Du alle Zeilen einzeln und kannst damit machen, was Du willst, wenn Du weißt, was Du willst.
    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).
    Programmierfragen über PN / Konversation werden ignoriert!
    Vollzitat eines Vorposts an dieser Stelle entfernt ~VaporiZed

    Und wie trennst du den eingelesenen String?

    Also normalerweise wird ja irgendwas eingelesne und dann mit

    Visual Basic-Quellcode

    1. string.plit(",")


    getrennt.

    Wenn ich jetzt

    Quellcode

    1. "Test1, Test2","Test3,Test4"

    nehme, dann wird mit

    Visual Basic-Quellcode

    1. String.splitt(",")

    ja auch innerhalb der Anführunsstriche getrennt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()