CSV Datensatz in Einzelsegmente aufteilen

  • VB.NET

Es gibt 27 Antworten in diesem Thema. Der letzte Beitrag () ist von csd2001.

    IO.File.ReadAllLines(Dateipfad, DeinEncoding) 'DeinEncoding wäre was vom Typ System.Text.Encoding


    Wenn die csv wirklich im UTF8 Format vorhanden ist dann:

    VB.NET-Quellcode

    1. IO.File.ReadAllLines(Dateipfad) 'UTF8 ohne BOM


    Bei Ansi:

    VB.NET-Quellcode

    1. IO.File.ReadAllLines(Dateipfad,system.text.encoding.default) 'Ansi (CP 1252)

    Das gleiche beim speichern:
    Ohne Encoding Angabe speicherst du als UTF8 ohne BOM.

    Das heißt: Du hast bisher im UTF8 Format gespeichert (Betrifft aber nur Zeichen > 127 z.B. ÄÖÜäöü߀)

    Und: Bei csv-Dateien auf keinen Fall ».RemoveEmptyEntries)«

    csd2001 schrieb:

    Dein Text DieDateizeilen was muss da stehen?
    Na nix anderes als ich geschrieben habe. In der dort erzeugten Variable namens DieDateizeilen werden all die Dateizeilen je als String drinstecken. Es entsteht also ein String-Array.

    csd2001 schrieb:

    Dim monat = IO.File.ReadAllLines("f:\Victron.csv", UTF8)
    Bitte immer dazuschreiben, welcher Fehler auftritt. Wie lautet die genaue Fehlerbeschreibung? Nur so können wir weiterhelfen und korrigieren.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    csd2001 schrieb:

    da kommen drei kryptische Zeichen bei raus.

    csd2001 schrieb:

    Ich habe es so:
    Kannst Du die CSC-Datei mal anhängen?
    Erweiterte Antwort => Dateianhänge => Hochladen.
    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!
    @ErfinderDesRades

    Das einlesen der gesamten Datei in die ListBox1 funktioniert schon mal. Dafür schon einmal ein großes Lob an alle hier.
    In der TextBox1 steht der letzte Datensatz nach durchlauf der Schleife. (Ist nur zur Probe)
    Ich möchte jetzt die einzelnen Zeilen aus der ListBox1 in die neue Datei Victron1.csv schreiben.
    Das ist der Punkt wo ich jetzt erst einmal nicht weiter komme. Die CSV Datei hatte ich schon hochgeladen.

    Was kommt anschließend:
    Im nächsten Schritt möchte ich die Daten mit einer anderen Tabelle vergleichen und auf Abänderung prüfen. Mir würde aber der nächste Schritt schon einmal helfen.

    Hier einmal der Code:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. Dim monat As String
    4. Dim datei As Integer
    5. Dim datei1 As Integer
    6. Dim zaehler As Integer = 0
    7. 'Dim kl As String
    8. datei = 1
    9. datei1 = 2
    10. 'Dim BB As String
    11. Me.ListBox1.Items.Clear()
    12. FileOpen(datei, "f:\Victron.csv", OpenMode.Input)
    13. FileOpen(datei1, "f:\Victron1.csv", OpenMode.Append) 'Pr∏fen ob Datei vorhanden ist!
    14. Do
    15. monat = LineInput(datei)
    16. TextBox1.Text = monat
    17. Dim Text As String = TextBox1.Text
    18. Dim Trenner() As String = {";"}
    19. Dim Einzel() As String = Text.Split(Trenner.ToArray, StringSplitOptions.RemoveEmptyEntries)
    20. zaehler += 1
    21. Me.ListBox1.Items.AddRange(Einzel)
    22. Loop Until zaehler = 10
    23. FileClose(datei)
    24. FileClose(datei1)
    25. End Sub
    26. End Class

    CodeTags gesetzt ~VaporiZed

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

    @csd2001 So was (ich habe mir mal erlaubt, da VB.NET draus zu machen):
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Text
    3. Public Class Form1
    4. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    5. Dim zaehler As Integer = 0
    6. Me.ListBox1.Items.Clear()
    7. File.Delete("D:\Temp\Victron2.csv")
    8. For Each monat In File.ReadLines("D:\Temp\Victron.csv", Encoding.Default)
    9. TextBox1.Text = monat
    10. Dim Trenner() As String = {";"}
    11. Dim Einzel() As String = monat.Split(Trenner, StringSplitOptions.RemoveEmptyEntries)
    12. Me.ListBox1.Items.AddRange(Einzel)
    13. File.AppendAllLines("D:\Temp\Victron2.csv", Einzel, Encoding.Default)
    14. zaehler += 1
    15. If zaehler = 10 Then
    16. Exit For
    17. End If
    18. Next
    19. End Sub
    20. End Class
    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!
    @RodFromGermany

    Super DANKE das funktioniert, man muss sich wirklich umstellen und im Alter ist das schwer. Jetzt komme ich erst einmal weiter, kann sein das ich doch noch irgend wo einen Hänger habe und melde mich noch einmal.
    Also an alle, ein großes Dankeschön.