CSV-Dateien in Calc bearbeiten: Automatische Entfernung von führender "0" oder "+" in (Telefon-)Nummern verhindern

Moin.

Beim Öffnen einer CSV-Datei, die Telefonnummern mit typischer führenden “0” bzw. “+” enthält, werden diese durch die automatische Behandlung der Werte als Zahl entfernt und sind verloren.

Wie kann man das bitte verhindern? Gerne pauschal, so dass es auch für das Öffnen weiterer CSV nicht wieder passieren kann.

Wie würdet ihr vorgehen?

Das kommt jetzt darauf an, wie denn die csv-Datei formatiert ist. Du kannst zum einen vorwählen “Felder in Anführungszeichen als Text formatieren”. Zum anderen kannst Du auf den Spaltenkopf der Telefonnummer klicken und da aus “Standard” einfach “Text” machen.

Pauschal wirst Du so etwas dann erreichen, wenn wirklich die Felder in Anführungszeichen gesetzt sind, denn diese Einstellung bleibt bis zur nächsten Änderung bestehen. Mit der Änderung des Formats für den Spaltenkopf müsstest Du dann ggf. einen Import über Makro laufen lassen.

1 Like

Das ist etwas missverständlich… eine csv-Datei an sich ist immer plain-text die hat keine Formatierungen! ( ich nehme aber an du meinst hier Struktur im Sinne von quotes, Trennzeichen etc. )

Was soll ich sagen? csv-Daten sind immer Datenbank-Daten. Sie dienen dem Import von Datensätzen, wenn keine Verbindung zur Quelldatenbank herstellbar ist. Es gibt tausende von gültigen csv-Varianten, aber sie haben fast immer gemeinsam, dass Text, Zahlen und Datumswerte in getrennten Spalten untereinander stehen. Bei Verwendung einer Datenbank werden Postleitzahlen und Telefonnummern als Text definiert und dann auch als Text verarbeitet.
Ein Datum, ein Text, ein Geldbetrag.

  1. Variante mit Semicolon als Spaltentrenner, ISO-Datum und Währung mit Punkt-Dezimal
    2020-12-31;'Text; mit Spaltentrenner';1,234.99EUR
  2. Variante mit | als Spaltentrenner, deutschem Datum und Komma-Dezimal
    31.12.2020|"Text| mit Spaltentrenner"|1.234,99€
  3. Variante mit Komma als Spaltentrenner, | als Texttrenner, US-Datum und Währung:
    12/31/2020,|Text, mit Spaltentrenner|,$1234.99
    Alle Import-Probleme, die irgendwie mit csv zusammenhängen sind, ohne diese Details zu wissen, absolut unlösbar, egal ob Du Deine Banking-App, Excel, Calc oder eine Datenbank verwendest.

…indem man im csv-import-Dialog die entsprechenden Spalten in der Vorschau markiert und den Spaltentyp von Standard auf Text ändert.
edit: ups den letzten Satz hätte ich mir sparen können wenn ich vorher auch den 2. Absatz von @RobertG gelesen hätte.

geht nicht grundsätzlich[1], solange nicht garantiert ist daß die …csv’s nicht gleichartig aufgebaut sind ( im Sinne von »an welche[n] Positionen befinden sich die entsprechenden Daten )

[1] Falls du regelmässig eine importierte csv »updaten« möchtest, die immer in der gleichen Struktur aus dem selben Pfad importiert wird, dann setze beim ersten initialen Import die Option Datei verlinken direkt im Dialog der nach dem …csv-import-Dialog erscheint,

1 Like

Manchmal ist man so blind, das hatte ich übersehen, dass man dort Einfluss nehmen kann auf den Datentyp. Danke : )

Ja, einmal oder zweimal pro Jahr gehe ich an die importierte CSV ran um Datensätze zu entfernen und den Rest zu normalisieren. Bei den Daten handelt es sich um Logins (es gibt natürlich noch andere Anwendungsfälle) aus meinem Passwortmanager. Umfangreicheres Editieren und vor allem Normalisieren geht halt Dimensionen einfacher in einer Tabelle als Interface, gegenüber dem GUI des Passwortmanagers.

Ich arbeite beim Normalisieren auch oft mit regulären Ausdrücken.

Nach “Datei öffnen mit Libreoffice” erhielt ich den Importdialog, aber danach keine Option “Datei verlinken”. Ich suche morgen danach.

Aus Neugier:
Warum ist CSV eigentlich für solche Exporte/Importe eigentlich der Standard und nicht ein genormtes ODS-Format?

Wenn Werte in Tabellen Sonderzeichen enthalten, die auch typisch als Separator in CSV eingesetzt werden, handelt man sich doch potentiell Schwierigkeiten ein. Ich empfinde CSV für tabellarische Daten als Anachronismus.

achso, den gibts wohl nur per ⇒ Tabelle ⇒ Tabelle aus Datei einfügen (falls du hier im ersten Schritt eine …csv nimmst)

Weil Logdateien vor allem schnell und quasi atomar geschrieben bzw. zeilenweise erweitert werden müssen! …

.ods ist bereits ein genormtes Format, und zwar …xml als …zip-archiv. Beides zusammen ist wesentlich komplexer und langsamer beim lesen/schreiben.

Eine vernünftige csv-implementierung escaped solche Zeichen oder “quoted” den Text drumrum, und ja , Anfänger die glauben sie könnten .csv manuell (z.B per BASIC) schreiben/lesen zerschiessen dabei sehr gerne die Daten…

Daten zu Schrott machen geht auch sehr gut per RegEx
xkcd_1171

Danke. Ich habe das jetzt mal durchgespielt.
1 Neue leere Calc-Datei öffnen
2 Tabelle aus Datei einfügen
3 [x] Tabelle verknüpfen
4 Spalten-Datentyp manuell auf von Standard auf Text ändern
5 Speichern der neuen Datei als CSV als test.csv
6 Schließen von test.csv
7 Öffnen von test.csv

Resultat: Es wird per Default wieder für alle Spalten der Datentyp Standard angezeigt.
Jedes Öffnen einer CSV löst also jedesmal neu einen “Import” aus.
Somit lohnt der Zusatzaufwand “Verknüpfen” nicht.

Zu CSV als Export-/Import-Format. Danke für Deine Komententare.

Aus meiner bescheidenen Sicht ist Geschwindigkeit ein absolut untergeordnetes Kriterium beim Export/Import.
Bekäme ich die Option “Wollen Sie 3 Sekunden länger warten und dafür statt des CSV ein ODS erhalten”: ich würde zugreifen, ohne zu zögern.

Dieses Aufpassen-Müssen, sich durch Trennzeichen und “Zeichenfolgen-Trennzeichen” nix zu zerschießen nervte mich schon immer. Ja, ich bin damit einigermaßen erfahren und komme klar. Aber es nervt trotzdem. Pech. Es besteht ja offenbar keinerlei Aussicht, dass sich dieses Import/Exportformat je auf ODS ändern oder dieses zumindestens optional angeboten wird.

Ich habe gerade nochmal einen Test durchgeführt, wie LO beim Speichern als CSV mit dem Datentyp “Text” umgeht.

1 Tabelle mit 2 anlegen

foo|01
bar|a,b
zo|c"d

2 Beide Spalten als Datentyp “Text” formatieren
3 Speichern als CSV
4 Im Speicherdialog ist die Option “Text zwischen Hochkommata” ausgeben deaktiviert. Ok, also manuell wählen.

Resultat:

“foo”,“01”
“bar”,“a,b”
“zot”,“c”“d”

Wenn ich diese Datei jetzt in LO öffne, bietet mir der Importdialog als Default trotzdem wieder “Standard” für beide Spalten an.
Wenn ich das übersehe, wird die Zeichenfolge in B1 automatisch zu “1” gewandelt.
Ist das aus eurer Sicht erwartbares Verhalten?

xkcd: immer genial, ich liebe ihn. good point about regex : )

Kleinigkeit am Rand:
Gibt es für dieses Forum eine Option Kommentare stets automatisch ausgeklappt darzustellen?

Nein, das Scenario ist folgendermassen:

  1. du hast eine .csv mit stets gleichbleibender Struktur die regelmässig von irgendwoher eine vorhandene .csv (im gleichen Pfad mit gleichem Namen) überschreibt.

  2. Du importierst die einmal per Tabelle ⇒ Tabelle aus Datei einfügen mit den benötigten import-optionen

  3. im nächsten Schritt setzt du einmal die Option verknüpfen

später musst du dann nur die Verknüpfung manuell oder automatisch aktualisieren (lassen)

OK, danke. Das probiere ich nochmal in Ruhe aus. Wirklich verstanden habe ich es noch nicht.

Die Struktur der CSV, die vom Passwortmanager kommt, ist immer gleich. Die Vorraussetzung wäre also gegeben.
Mit Pfad meinst Du den Dateipfad, richtig?

Ja, aber wie ist sie denn genau?