Inhalt einer CSV Datei auslesen

  • Hallo liebes Forum,


    Ich möchte mit Hilfe von JavaScript den Inhalt einer CSV Datei auslesen. Dazu hab ich auch schon einige Beispiele gefunden und ich konnte bereits erste Erfolge erzielen. Die Datei ist so aufgebaut :


    Zeile 1 Feld A1 Überschrift

    Zeile 2 (Spalte A) Schulfach Note (Spalte B) 2

    Zeile 3 (Spalte A) Schulfach Note (Spalte B) 4


    D h in Spalte A steht ein Wort und in Spalte B eine Zahl. Die Datei hat insgesamt 2000 Zeilen.


    Es gibt bspw IndexOf und slice

    const marks = ["Schulfach", "Noten"];
    const grade = mark.slice(1);

    Das müsste mir aus Spalte B die Note extrahieren. Ich bin mir aber nicht sicher, ob ich indexOf benötige oder wie slice in Bezug auf csv Dateien genau arbeitet. Mit slice liest man einen String Array ein, beginnend bei 0. Soweit ist es mir klar, aber bedeutet (1) in dem Beispiel dass der Wert aus Spalte B genommen wird? Und wie greife ich auf die Zeilen 2 bis 2000 zu? Jede Note soll einzeln bei mir gespeichert werden.


    Ich würde mich über Tipps sehr freuen

    Gruß

  • Hallo Unity21X und willkommen im Forum!

    Ich denke, slice wird dir dabei weniger helfen, weil Du dafür entweder ein Array brauchst oder die genaue Länge der Elemente.

    Eher schon mit split(), indem Du jede Zeile am Trennzeichen in ein Array aufspaltest.

    Am besten aber mit einer ausgewachsenen Bibliothek:
    Papa Parse - Powerful CSV Parser for JavaScript
    Die hilft dir auch gleich, die Datei einzulesen und vermeidet Probleme, falls das Trennzeichen im Text selber auftritt.

  • Vielen Dank. Ich kann leider keine Bibliotheken mit einbinden. Ich muss es anders lösen.

    Verstehe mit split lässt sich das umsetzen. Aktuell sieht mein Code so aus:

    Let text;

    Let value;

    Let pos;

    Let lines;

    Let secondLine;

    Let index;


    Lines = text.split("\n");

    secondLine = lines[1];

    pos = secondLine.indexOf(";");

    value = Number(secondLine.slice(pos, 1));

    Tags("Wert1").write(value);


    Damit will ich versuchen den ersten Wert zu bekommen

  • So würde es gehen, aber unnötig kompliziert. Spalte die Zeilen ebenfalls mit split in die Felder auf. Und Du willst ja sicher alle Zeilen auswerten, dazu durchläufst Du am besten die Variable Lines mit forEach.

  • Bei mir wird der Wert 0 gelesen. Kannst du dir den Code nochmal anschauen? Da muss noch ein Fehler drin sein.


    Wie würdest du die Spalten in Felder aufteilen?

  • Ich würde das so aufziehen, beachte meine Kommentare:

    (Ungetestet)

  • Sieht gut aus, danke :). Kann es sein, dass ich bei meinem Beispiel lines[2] schreiben müsste? Das Array nach dem split müsste doch als ersten Eintrag [0] die Überschrift haben, diese steht ja in Zelle A1, danach geht es mit A2 weiter dem Fach und B2 die Note

  • Ja, wenn Du mit der Überschrift etwas anderes machen willst, kann Du das so in der Schleife berücksichtigen:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!