Seite 1 von 1

Textimport einer csv-Datei mit Zahlen fehlerhaft mit Sprache Deutsch

Verfasst: Sa 1. Jul 2017, 15:39
von nji
Hallo.
Wenn ich beigefügte Datei mit Calc einlesen lasse/ importiere, dann wird die 13. Zeile fehlerhafterweise als 17543 eingelesen, wenn ich beim Importfenster Deutsch als Sprache eingestellt habe (= mein Standard). (Ändere ich auf Englisch, ist alles OK.). In dem Vorschaufenster des Textimports wird es immer richtig angezeigt. Meine Version: Version: 5.2.7.2 (x64). Bei einer 5.3-er Version war der Effekt aber auch. Mache ich da was verkehrt, oder ist es ein Fehler?

Re: Textimport einer csv-Datei mit Zahlen fehlerhaft mit Sprache Deutsch

Verfasst: Sa 1. Jul 2017, 16:13
von mikele
Hallo
das Verhalten liegt an der Zahlenerkennung. In der Sprache "deutsch" ist der Punkt das Tausender-Trennzeichen und das Komma der Dezimaltrenner. In "englisch" ist es genau anders herum. Du kannst aber auch mit der Spracheinstellung "deutsch" zum richtigen Ziel kommen:
Klicke im Importfenster im Vorschaubereich (unterhalb von Feldbefehle Spaltentyp) in die Spalte. Dann kannst bei Spaltentyp "US-Englisch" auswählen und die Zahlen werden korrekt importiert.

Re: Textimport einer csv-Datei mit Zahlen fehlerhaft mit Sprache Deutsch

Verfasst: Sa 1. Jul 2017, 16:21
von F3K Total
Hi,
hast du dir die Datei mal in einem Editor angesehen? Sieht so aus:

Code: Alles auswählen

1.29948,
0.175511,
0.249806,
0.123364,
0.0938669,
0.278259,
0.282859,
1.2317,
0.709869,
11.6873,
13.0799,
6.70087,
17.543,
25.0048,
Der Dezimaltrenner ist ein Punkt (englisch), der Spaltentrenner ein Komma, deutscher Dezimaltrenner also.
In der 13. Zeile hast du nur drei Stellen hinter dem Punkt, der daher in deutsch als Tausender-Trenner interpretiert wird. Das Programm macht alles richtig.
Da es sich um eine englische Datei handelt, solltest du sie auch Englisch importieren, wie du schreibst, ist dann alles i.O.
Du kannst natürlich die .csv vorher mit einem Editor bearbeiten, z.B. Komma durch Semikolon und dann Punkt durch Komma ersetzen, dann wird die Datei problemlos eingelesen:

Code: Alles auswählen

1,29948;
0,175511;
0,249806;
0,123364;
0,0938669;
0,278259;
0,282859;
1,2317;
0,709869;
11,6873;
13,0799;
6,70087;
17,543;
25,0048;
Gruß R

Re: Textimport einer csv-Datei mit Zahlen fehlerhaft mit Sprache Deutsch

Verfasst: Sa 1. Jul 2017, 17:06
von nji
Oh, DA wäre ich so schnell nicht drauf gekommen. Dankeschön! :P

Allerdings möchte ich zu meiner "Verteidigung" anbringen, dass ich nicht der Meinung bin, dass das Programm "alles richtig macht".
Denn dann hätte es (wenn es denn schon bei gewähltem Deutsch als 1000er-Trenner interpretiert) alle anderen Zahlen, bei denen der Punkt keine 3er-Abstände von rechts her hat, einen Importfehler melden müssen. Und dann wäre das auch mir aufgefallen. Schaut man in das Importergebnis: Alles Zahlen - nullo problemo.

Das ist jetzt nicht als "Mäkelei" gedacht, sondern ich halte die Realisation, so wie es jetzt ist, für SEHR gefährlich. Eben deswegen, weil es einem i.d.R. nicht auffällt, dass irgendwo tief im Datenbestand etwas falsch interpretiert wird.

Ich plädiere also dafür, den Importfilter mit einer entsprechenden Fehlermeldung auszustatten.

Re: Textimport einer csv-Datei mit Zahlen fehlerhaft mit Sprache Deutsch

Verfasst: Sa 1. Jul 2017, 17:12
von F3K Total
Ja,
dein Plädoyer wird hier leider nichts bewirken, dies ist ein privates Anwenderforum, in dem eben Anwender in ihrer Freizeit anderen Anwendern zu helfen versuchen.
Du kannst eine Meldung im BUGZILLA des LibreOffice-Projektes schreiben.
Gruß R
EDIT: Wird wohl nicht nötig sein, mikele hat es im folgenden Beitrag erläutert.

Re: Textimport einer csv-Datei mit Zahlen fehlerhaft mit Sprache Deutsch

Verfasst: Sa 1. Jul 2017, 17:13
von mikele
Hallo,
Schaut man in das Importergebnis: Alles Zahlen - nullo problemo.
Einspruch euer Ehren: Es sieht zwar so aus, als wenn es Zahlen wären, aber Calc hat die anderen Zahlen als Text importiert (erkennst du an der linksbündigen Formatierung). Wenn du z. B. in der Zelle B1 =A1*2 rechnest, erhältst du entsprechend eine Fehlermeldung.
Insofern macht Calc dann doch alles richtig, indem es 1.29948 als Text erkennt (was sollte es im Deutschen auch sonst sein) und 17.543 eben als Zahl. Alles andere (das es sich um Zahlen im englischen Format handelt) muss ich Calc dann schon verklickern. Man könnte sich natürlich eine intelligente Erkennung wünschen, aber das wäre eine ganz andere Herausforderung für die Entwickler (und es gibt sicher noch andere Formate in anderen Sprachen etc. ...).

Re: Textimport einer csv-Datei mit Zahlen fehlerhaft mit Sprache Deutsch

Verfasst: Sa 1. Jul 2017, 17:23
von nji
Potztausend ... Du hast Recht!

Das war mir zwar optisch aufgefallen ... aber es hat nicht "Klick!" gemacht.
(Immerhin bin ich in Calc per Rechtsklick in die Zelle gegangen/ Formate ... und da kam: Zahl!)

Die ganze Handhabung sieht schon logisch und korrekt aus. Aber ich habe trotzdem ein ziemlich ungutes Gefühl, weil ich bestimmt nicht der Einzige bin, der in diese Grube fällt. Und richtig gefährlich wird's ja eben erst dann, wenn es einem nicht auffällt.

Ich werde mal drüber nachdenken und wenn ich zu was Vernünftigem komme einen Vorschlag bei bugzilla machen.
(Automatische Erkennung scheint mir keine gute Idee zu sein ...)

Aber eine Liste, die CommaSeparierteValues enthält (csv) KANN im Prinzip keine deutsche Dezimalzahlen enthalten ...

Hmm...

Re: Textimport einer csv-Datei mit Zahlen fehlerhaft mit Sprache Deutsch

Verfasst: Sa 1. Jul 2017, 17:36
von F3K Total
nji hat geschrieben:
Sa 1. Jul 2017, 17:23
Aber eine Liste, die CommaSeparierteValues enthält (csv) KANN im Prinzip keine deutsche Dezimalzahlen enthalten ...
Oh doch,
dann werden Feldbegrenzerzeichen benutzt, siehe https://de.wikipedia.org/wiki/CSV_(Dateiformat)
So z.B.

Code: Alles auswählen

ZAHL,ZAHL1
"445,245","445,245"
"340,263","340,263"
"579,291","579,291"
"913,48","913,48"
"827,438","827,438"
"511,32","511,32"
"99,178","99,178"
"285,046","285,046"
"233,93","233,93"
"829,842","829,842"
"209,233","209,233"
"920,864","920,864"
"274,355","274,355"
"618,596","618,596"
"82,479","82,479"
"616,364","616,364"
"492,85","492,85"
Gruß R