Entwickler-Ecke

IO, XML und Registry - Problem mit schrecklicher CSV-Datei :(


Schafschaf - Fr 24.04.15 15:11
Titel: Problem mit schrecklicher CSV-Datei :(
Hallo,

ich habe mal wieder ein Problem.
Dabei gehts um eine Csv Datei, dich ich gerne einlesen möchte und dabei das Durchlaufen von einzelnen Zeichen vermeiden möchte.

Die Datei sieht sinngemäß so aus:


Quelltext
1:
2:
feld;feld;feld;feld;feld;"fel;d";
feld;<linebreak>feld;feld;"fe<linebreak>ld";


Semikolons trennen die Felder und ASCII A0 (UTF8 Linebreak) trennen die Rows.
Dummerweise kommen die Semikolons und Linebreaks auch innerhalb der Felder vor, dabei sind sie aber durch "" umschlossen.
Am liebsten würde ich mit Linq sagen es soll die Split-Chars innerhalb von "" ignorieren, aber es klappt nicht.
Und auch beim Einlesen selbst kann ich nicht einfach File.ReadLine nehmen, denn der Windows Zeilenumbruch in der Datei bringt mir gar nix.
Die Datei nervt mich echt :(

Liebe Grüße,

Schafschaf


Ralf Jansen - Fr 24.04.15 15:22

Im Microsoft.VisualBasic Namespace gibt es den TextFieldParser der mit solchen Datenstrukturen umgehen kann. Zumindest mit CSVs und Quotings darin. Ob das auch die Zeilenumbrüche sauber drauf hat weiß ich nicht.


Schafschaf - Fr 24.04.15 15:54

@Ralf Jansen
Habe ich eben mal ausprobiert, da kann ich dem die Eigenschaft "HasFieldsEnclosedInQuotes = true" mitgegeben, hat aber leider auch nix gebracht :(


Th69 - Fr 24.04.15 17:48

Kannst auch mal den Fast CSV Reader [http://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader] ausprobieren (zum Download mußt du dich bei CodeProject registrieren, falls du es noch nicht bist):
Zitat:
This reader supports fields spanning multiple lines. The only restriction is that they must be quoted, otherwise it would not be possible to distinguish between malformed data and multi-line values.