none
Einlesen einer CSV Datei

    Question

  • Hi,

    beim Einlesen einer CSV-Datei möchte ich Zeilenumbrüche innerhalb der Felder berücksichtigten.

    Ich öffne die Datei mit einem StreamReader und gehe dann mittels ReadLine():string durch. Die einzelnen Feldwerte übernehmen ich in eine Datenstruktur. Problematisch wird es, wenn die Datei Zeilenumbrüche innerhalb von Feldern enthält.

    Dieses Problem ist sicherlich nicht neu. Hat jemand evtl. eine fertige "Out of the Box" Lösung bzw. kann mir jemand ein ausgetestes Verfahren nennen?

    Danke

    Christian

    Tuesday, October 05, 2010 11:04 AM

Answers

  • Hallo Christian,

    Ich habe gute Erfahrungen mit diesem CsvReader gemacht. Die Library kostet zwar was, ist aber sehr flexibel und performant. Das Feature das Dich interessiert wird so beschrieben:

    "Occurrences of any character, including record end delimiters, inside text qualified fields."

    Aber im Grunde genommen ist es eine einfache Sache: Man liest die Datei blockweise ein und parst jeden einzelnen Block mithilfe einfachster Regeln, z.B. "Environment.NewLine ist nur dann als Datensatztrennzeichen zu werten, wenn es nicht in einem Textfeld steht"

    Gruß
    Marcel

    • Marked as answer by Christian315 Monday, October 11, 2010 6:23 AM
    Saturday, October 09, 2010 12:18 PM
    Moderator
  • Hallo Christian,

    dann ist folgender CSV Reader (/Writer) empfehlenswert (von Juni 2010):

    [C# CSV Reader and Writer - CodeProject]
    http://www.codeproject.com/KB/cs/CsvReaderAndWriter.aspx

    oder auch der etwas ältere:

    [A Fast CSV Reader - CodeProject] (vom April 2010)
    http://www.codeproject.com/KB/database/CsvReader.aspx

     


    ciao Frank
    • Marked as answer by Christian315 Monday, October 11, 2010 6:23 AM
    Saturday, October 09, 2010 12:59 PM
  • Hi Frank,

    vielen Dank für Deine Hilfe!

    Ich parse inzwischen auf die einzelnen Zeilen und zerpflücke diese daraufhin.

    Viele Grüße

    Christian

    • Marked as answer by Christian315 Monday, October 11, 2010 6:23 AM
    Monday, October 11, 2010 6:23 AM

All replies