Wie verhindere ich, dass Numbers Zahlen beim Importieren einer CSV-Datei verstümmelt?

Wenn ich eine CSV-Datei in Numbers öffne, konvertiert es "hilfreich" Felder, die es als numerisch erkennt, indem es führende Nullen entfernt, Dinge konvertiert, die es als Datumsangaben erkennt, usw.

Angenommen , Sie geben einen UPC-Code in eine Numbers -Tabelle ein: 005566778899 , Numbers wandelt diesen automatisch in 5566778899 um . Das würde ich nicht wollen...

So wie ich Numbers verwende, öffne ich jedoch Datenbanken mit Tausenden von UPC-Codes mit vorangestellten Nullen. Einige von ihnen enthalten auch Daten , die Numbers ebenfalls umformatiert. Grundsätzlich möchte ich keine dieser Funktionen, ich möchte, dass meine Inhalte in Ruhe gelassen werden.

Wie kann ich Numbers dazu bringen, meine Daten intakt zu lassen, wenn ich eine CSV-Datei öffne?

Das Konvertieren der Felder in Text nach dem Importieren hilft nicht, da die Daten bereits durcheinander gebracht wurden ...

Was meinst du mit "die Daten wurden bereits durcheinander gebracht"? Meinst du die Konvertierung in Text, nachdem die Datei geöffnet ist?
Beim Öffnen der Datei ändern sich sowohl Excel als auch Numbers um alle Ihre Daten. Was immer ich also tun muss, ich muss es tun, bevor ich die Datei öffne.
7 Jahre später scheint dies immer noch ein klaffendes Loch zu sein. Problematisch ist, dass ein Roundtrip von csv -> Numbers -> csv Zellen verändert. Die führenden Nullen sind ein gutes Beispiel. Eine andere sind Prozentsätze (z. B. 20 % werden zu 0,2). Eine andere ist die wissenschaftliche Notation (z. B. 1E-2 wird zu 0,01). Das Einschließen in doppelte Anführungszeichen hilft nicht, und das Voranstellen eines Apostrophs wird wörtlich interpretiert. Ich denke, die beste Option wäre, vor dem Importieren allem ein Apostroph voranzustellen und nach dem Exportieren alle anfänglichen Apostrophe zu entfernen ...

Antworten (3)

Wenn ein Feld in einer CSV-Datei mit einem Apostroph ( ') beginnt, behandeln sowohl Excel als auch Numbers das Feld als Text und geben es nicht mit einer numerischen Formatierung wieder.

Ihre CSV-Dateien scheinen zu versuchen, die Textwiedergabe durch das Einschließen von Zahlenfeldern in doppelte Anführungszeichen zu erzwingen, aber Numbers und Excel scheinen den Hinweis nicht zu akzeptieren, dass Zahlen in doppelten Anführungszeichen als Zeichenfolgen behandelt werden sollten. Der Trick scheint darin zu bestehen, die CSV-Dateien so zu ändern, dass sie den Trick „beginnt mit einem einzelnen Apostroph“ anstelle des Tricks „in doppelten Anführungszeichen enthalten“ für numerische Felder verwenden, aber die doppelten Anführungszeichen für Textfelder mit Satzzeichen beibehalten (einschließlich Kommas, Anführungszeichen, Zeilenumbrüche usw.).

Um Ihre CSV-Dateien so zu verarbeiten, können Sie eine Automator-Anwendung erstellen.

Erstellen Sie in Automator eine neue Anwendung.

Es wird eine einzige Aktion haben: Shell-Skript ausführen (Eingabe als Argumente übergeben). Hier ist das Skript:

for f in "$@"
do
    perl -pi -e "s/\"\"([0-9A-Za-z: \.\-+]+)\"/'\1/g" "$f"
done

Speichern Sie die resultierende Anwendung auf Ihrem Desktop. Legen Sie alle CSV-Dateien, die Sie in Numbers verwenden möchten, auf dem Anwendungssymbol ab, und sie werden konvertiert, sodass Numbers die Zahlen in den Feldern als Literalzahlen beibehalten und sie nicht formatieren oder Informationen wegwerfen sollte.

Sichern Sie Ihre Daten, bevor Sie dies versuchen; Es ist möglich, dass eine besonders seltsam aufgebaute Zeichenfolge in einem Datensatzfeld die Ergebnisse hier verfälscht.

Geben Sie hier die Bildbeschreibung ein

Diese Arbeit so aussehen zu lassen, als bedarf es einiger Interaktion. Diese Diskussion sollte besser im Chat stattfinden
Für Numbers Ende 2022 wird diese Lösung nicht (mehr?) funktionieren. Die importierten Daten werden als Text erkannt, aber der führende Apostroph ist in der Tabelle sichtbar. Kann keine guten Informationen darüber finden, wie dies zu erreichen ist. Großer Fehler beim CSV-Import von Numbers. :/

Im Einzelnen erfahren Sie hier, wie Sie mit führenden Nullen umgehen . Ich denke, Ihre Frage bezieht sich eher auf die Formatierung von Zellen als auf die Autokorrektur.

Wie bereits erwähnt, ist die Autokorrekturfunktion selbst ein Systemelement und muss in den Systemeinstellungen deaktiviert werden.

Das Konvertieren der Zellen in dieses Format hilft nicht, da die Daten bereits durcheinander gebracht wurden ...
Ich hätte erwartet, dass die Nullen zurückkommen, wenn Sie die Zellen formatieren - wenn Numbers diese Nullen beim Import destruktiv entfernt, wäre das wirklich scheiße. Möglicherweise müssen Sie Zellen vor dem Importieren formatieren.
Das tut es auf jeden Fall.

Huzzah, dank dieser und anderer Antworten gibt es jetzt eine Methode mit den folgenden Vorteilen:

  • Funktioniert sowohl in Excel als auch in Numbers
  • Kann automatisiert werden.
  • Ist in Numbers unsichtbar.
  • Erzeugt CSV-Dateien ohne Auswirkung vom Import bis zum Export.

Der Trick besteht darin, nicht jedem Feld ein Apostroph voranzustellen oder in doppelte Anführungszeichen zu setzen, sondern mit voranzustellen ="und zu suffixieren ". Beim Import behandelt Numbers den Feldinhalt als String und lässt beim Export das Präfix und Suffix fallen.

Hier ist ein praktischer Einzeiler, der eine Datei namens vorverarbeitet my.csv:

sed 's/^/="/;s/,/",="/g;s/$/"/' my.csv | sed 's/=""//g' > tmp.csv

Der erste sedsetzt ="am Anfang jeder Zeile, ändert jedes Komma in ",="und beendet dann jede Zeile mit ". Der zweite sedentfernt dann alle leeren Felder, weil Numbers daran erstickt. Schließlich schreibt es eine Datei namens tmp.csv, die doppelt angeklickt oder übergeben werden kann, openum sie in Numbers zu importieren.

In der Praxis werden dadurch alle Felder verstümmelt, die Kommas enthalten. Es ist vielleicht besser, nur die Felder umzubrechen, die mit Zahlen beginnen, aber dann müssen Sie mit dem Anfang und Ende jeder Zeile und Ihrer Version regulärer Ausdrücke vorsichtig sein. Dies funktioniert unter macOS:

sed -E 's/(^|,)([[:digit:]][^,]*)($|,)/\1="\2"\3/g'

Das heißt, passen Sie den Anfang der Zeile oder ein Komma, eine Ziffer und dann eine beliebige Anzahl von Zeichen, die keine Kommas sind, dann das Ende der Zeile oder ein weiteres Komma an. Ersetzen Sie durch den gleichen Anfang und das gleiche Ende, aber mit dem mittleren Bit, das in ="und gewickelt ist ".