German CSV-Datei Format Problem bei Import !!!

Paulsche

Well-Known Member
Licensed User
Longtime User
Hi, ich möchte eine CSV-Datei die aus "Spritmonitor.de" erstellt wurde
in mein Programm einlesen, wobei immer der Fehler "Columns number and type do not match data file"

Wenn ich die CSV-Datei in Excel öffne sieht sie ganu ok aus, wenn ich sie
unter Excel dann einfach wieder speichere, kann sie problemlos in mein Programm eingelesen werden.

Im Anhang die Originaldatei umbenannt in .txt .

Vielleicht weiss jemand eine Lösung wie ich die Datei direkt einlesen kann,
ohne Umweg über Excel, wäre super !!
 

Attachments

  • 416045_fuelingsor.csv.txt
    651 bytes · Views: 274

specci48

Well-Known Member
Licensed User
Longtime User
Hallo Paulsche,

kannst Du den Export der Datei aus "Spritmonitor.de" irgendwie beeinflussen?

Das Problem mit der Datei ist folgendes:
Am Ende einer Zeile erwartet LoadCSV die beiden "Zeichen" Line Feed (Hex 0A) und Carriage Return (Hex 0D). Im Exportfile ist aber nur Line Feed (Hex 0A) enthalten.
Dadurch erkennt LoadCSV den Zeilenumbruch nicht (korrekt) und liest die gesamten Daten als eine einzelne Zeile ein!

Am Besten sieht man dies mit einem Hex-Editor. Aber auch, wenn Du die Originaldatei mit Notepad öffnest, erscheint am Ende jeder Zeile jeweils ein Kästchen. Wenn man dieses Kästchen löscht, im Notepad dann einen "sauberen" Zeilenumbruch einfügt und neu speichert, dann läßt sich die Datei auch problemlos einlesen.

Eine andere Lösung wäre, die .csv Datei beim Programmstart um die fehlenden Carriage Return (Hex 0D) zu ergänzen und erst dann in die Tabelle einzulesen.


Gruß
specci48
 

klaus

Expert
Licensed User
Longtime User
Hallo Paulsche,

Wie specci48 es schon erklärt hat fehlt ein CarriageReturn Zeichen.
Wenn man die Originaldatei mit einer mit Excel gespeicherte Datei vergleicht sieht man auch dass in der Originaldatei alle Strings mit Anführungszeichen umrandet sind was nicht der Exceldatei der Fall ist.
Beiliegend ein Programm das die Originaldatei in eine Stringvariable liest,die Anführungszeichen löscht und das CarriageReturn Zeichen anfügt, und wieder speichert.

Beste Grüsse.
 

Attachments

  • TestCSV.sbp
    852 bytes · Views: 274
Last edited:

Paulsche

Well-Known Member
Licensed User
Longtime User
Hallo Paulsche,

kannst Du den Export der Datei aus "Spritmonitor.de" irgendwie beeinflussen?

Das Problem mit der Datei ist folgendes:
Am Ende einer Zeile erwartet LoadCSV die beiden "Zeichen" Line Feed (Hex 0A) und Carriage Return (Hex 0D). Im Exportfile ist aber nur Line Feed (Hex 0A) enthalten.
Dadurch erkennt LoadCSV den Zeilenumbruch nicht (korrekt) und liest die gesamten Daten als eine einzelne Zeile ein!

Am Besten sieht man dies mit einem Hex-Editor. Aber auch, wenn Du die Originaldatei mit Notepad öffnest, erscheint am Ende jeder Zeile jeweils ein Kästchen. Wenn man dieses Kästchen löscht, im Notepad dann einen "sauberen" Zeilenumbruch einfügt und neu speichert, dann läßt sich die Datei auch problemlos einlesen.

Eine andere Lösung wäre, die .csv Datei beim Programmstart um die fehlenden Carriage Return (Hex 0D) zu ergänzen und erst dann in die Tabelle einzulesen.


Gruß
specci48

Hi Specci48, danke für die ausführliche Erklärung,
wie könnte ich beim Programmstart die fehlenden Carriage Returns ergänzen, hast Du mir da nen Tipp ?
Den Export aus Spritmonitor kann man leider nicht beeinflussen :-(
 

Paulsche

Well-Known Member
Licensed User
Longtime User
Hallo Klaus, Hallo Specci48,

vielen Dank für die super Schnelle Hilfe, :sign0060:
klappt jetzt prima, super

Zur Info:

Musste folgendes ändern,

TableText=StrReplace(TableText,Chr(10),Chr(10)&Chr(13))

in

TableText=StrReplace(TableText,Chr(10),Chr(13)&Chr(10))
 
Top