Weiß jemand zufällig, ob es ein Token gibt, das ich für ein bestimmtes Feld zu meiner CSV hinzufügen kann, damit Excel nicht versucht, es in ein Datum zu konvertieren?
Ich versuche, eine CSV-Datei aus meiner Anwendung zu schreiben, und einer der Werte sieht so aus wie ein Datum, dass Excel es automatisch von Text in ein Datum konvertiert. Ich habe versucht, alle meine Textfelder (einschließlich des Felds, das wie ein Datum aussieht) in doppelte Anführungszeichen zu setzen, aber das hat keine Auswirkung.
Antworten:
Ich habe festgestellt, dass das Setzen eines '=' vor den doppelten Anführungszeichen das erreicht, was Sie wollen. Es erzwingt, dass die Daten Text sind.
z.B. = "2008-10-03", = "mehr Text"
BEARBEITEN (laut anderen Beiträgen) : Aufgrund des von Jeffiekins festgestellten Excel 2007-Fehlers sollte die von Andrew vorgeschlagene Lösung verwendet werden :
"=""2008-10-03"""
quelle
"=""2008-10-03"""
. Der Beitrag wurde aktualisiert.Ich weiß, dass dies eine alte Frage ist, aber das Problem wird nicht bald verschwinden. CSV-Dateien lassen sich leicht aus den meisten Programmiersprachen generieren, sind eher klein, in einem Crunch mit einem einfachen Texteditor lesbar und allgegenwärtig.
Das Problem liegt nicht nur bei Datumsangaben in Textfeldern, sondern alles , was numerisch ist, wird auch von Text in Zahlen umgewandelt. Einige Beispiele, bei denen dies problematisch ist:
Dies kann manchmal mit einer oder mehreren Nullen (0) beginnen, die bei der Konvertierung in eine numerische Zahl weggeworfen werden. Oder der Wert enthält Zeichen, die mit mathematischen Operatoren verwechselt werden können (wie in Datum: /, -).
Zwei Fälle, an die ich denken kann, dass die "prepending =" - Lösung, wie bereits erwähnt, möglicherweise nicht ideal ist, ist
Mein Hack, um das zu umgehen
Wenn dem Wert ein nicht numerisches und / oder nicht datiertes Zeichen vorangestellt wird, wird der Wert als Text erkannt und nicht konvertiert. Ein nicht druckbares Zeichen wäre gut, da es den angezeigten Wert nicht ändert. Das einfache alte Leerzeichen (\ s, ASCII 32) funktioniert hierfür jedoch nicht, da es von Excel abgeschnitten wird und der Wert dann immer noch konvertiert wird. Es gibt jedoch verschiedene andere druckbare und nicht druckbare Leerzeichen, die gut funktionieren. Am einfachsten ist es jedoch, das einfache Tabulatorzeichen (\ t, ASCII 9) anzuhängen (nachher hinzuzufügen).
Vorteile dieses Ansatzes:
Wenn es einen Grund gibt, warum Sie die Registerkarte nicht verwenden möchten, suchen Sie in einer Unicode-Tabelle nach etwas anderem Passendem.
Andere Option
Möglicherweise werden XML-Dateien generiert, für die ein bestimmtes Format auch von neueren MS Excel-Versionen für den Import akzeptiert wird und die viel mehr Optionen ähnlich dem XLS-Format zulassen, aber ich habe keine Erfahrung damit.
Es gibt also verschiedene Möglichkeiten. Abhängig von Ihren Anforderungen / Ihrer Anwendung ist möglicherweise eine besser als die andere.
Zusatz
Es muss gesagt werden, dass neuere Versionen (2013+) von MS Excel die CSV nicht mehr im Tabellenformat öffnen - ein weiterer Speedbump im Workflow macht Excel weniger nützlich ... Zumindest gibt es Anweisungen, um das Problem zu umgehen. Siehe z. B. diesen Stackoverflow: Wie werden CSV- Dateien in Excel 2013 korrekt angezeigt? .
quelle
\t
meinen Trennungscharakter hinzugefügt habe;
... Verdammt, MS Office, warum musste ich mehr als 2 Minuten brauchen, um das herauszufinden?column_name
) verwendet. Hat auch den Trick gemacht. Vielen Dank!'
, da sie irgendwie gut verstanden und nicht zu ablenkend ist ... aber eine unsichtbare wäre besser.Wenn Sie an Jarods Lösung und dem von Jeffiekins angesprochenen Problem arbeiten, können Sie Änderungen vornehmen
zu
quelle
"
irgendwo zwischen dem Datum Werte benötigen ."806676","None","41","=""05-16-2011""","100.00","False"
stattdessen und Sie werden sehen, dass beim Speichern und erneuten Laden der getrennte Text verloren geht.Ich hatte ein ähnliches Problem und dies ist die Problemumgehung, die mir geholfen hat, ohne den Inhalt der CSV-Datei bearbeiten zu müssen:
Wenn Sie die Flexibilität haben, die Datei anders als ".csv" zu benennen, können Sie sie mit der Erweiterung ".txt" benennen, z. B. "Myfile.txt" oder "Myfile.csv.txt". Wenn Sie es dann in Excel öffnen (nicht per Drag & Drop, sondern über Datei-> Öffnen oder die Liste der zuletzt verwendeten Dateien), bietet Excel Ihnen einen "Textimport-Assistenten".
Wählen Sie auf der ersten Seite des Assistenten als Dateityp "Begrenzt" aus.
Wählen Sie auf der zweiten Seite des Assistenten "," als Trennzeichen und wählen Sie auch das Textqualifikationsmerkmal, wenn Sie Ihre Werte in Anführungszeichen gesetzt haben
Wählen Sie auf der dritten Seite jede Spalte einzeln aus und weisen Sie jedem den Typ "Text" anstelle von "Allgemein" zu, um zu verhindern, dass Excel mit Ihren Daten in Konflikt gerät.
Hoffe das hilft dir oder jemandem mit einem ähnlichen Problem!
quelle
WARNUNG: Excel '07 hat (zumindest) einen (weiteren) Fehler: Wenn der Inhalt eines Feldes ein Komma enthält, wird das = "Feld, Inhalt" nicht korrekt analysiert, sondern alles nach dem Komma in das Feld eingefügt folgendes Feld, unabhängig von den Anführungszeichen.
Die einzige Problemumgehung, die ich gefunden habe, besteht darin, das = zu entfernen, wenn der Feldinhalt ein Komma enthält.
Dies kann bedeuten, dass es einige Felder gibt, die in Excel nicht genau "richtig" dargestellt werden können, aber ich vertraue darauf, dass niemand zu überrascht ist.
quelle
field, content
es"
drin ist. ZB"=""field, co""ntent"""
""""
.1"2
, wenn Sie sich für diesen Trick verwenden (im Gegensatz zu nur so dass es wie seine"1""2"
in der Datei - Excel wäre bereits als Text behandelt), dann die endgültige richtige Zeichenfolge in der Excel-Targeting - CSV - Datei endet Sein"=""1""""2"""
.Beim Erstellen der Zeichenfolge, die in C # in meine CSV-Datei geschrieben werden soll, musste ich sie folgendermaßen formatieren:
quelle
2018
Die einzig richtige Lösung, die für mich funktioniert hat (und auch ohne die CSV zu ändern ).
Excel 2010:
Excel Office365: (Client-Version)
Hinweis: Excel Office365 (Webversion), während ich dies schreibe, können Sie dies nicht tun.
quelle
Öffnen Sie in Excel 2010 ein neues Blatt. Klicken Sie im Datenband auf "Externe Daten aus Text abrufen". Wählen Sie Ihre CSV-Datei aus und klicken Sie auf "Öffnen". Weiter klicken". Deaktivieren Sie "Tab", setzen Sie ein Häkchen neben "Komma" und klicken Sie dann auf "Weiter". Klicken Sie auf eine beliebige Stelle in der ersten Spalte. Halten Sie die Umschalttaste gedrückt, und ziehen Sie den Schieberegler so lange, bis Sie in die letzte Spalte klicken können. Lassen Sie dann die Umschalttaste los. Klicken Sie auf das Optionsfeld "Text" und dann auf "Fertig stellen".
Alle Spalten werden wie in der CSV-Datei als Text importiert.
quelle
Immer noch ein Problem in der Microsoft Office 2016-Version, das für diejenigen von uns, die mit Gennamen wie MARC1, MARCH1, SEPT1 usw. arbeiten, ziemlich störend ist. Die Lösung, die ich nach dem Generieren einer ".csv" -Datei in R als die praktischste empfunden habe, Das wird dann geöffnet / für Excel-Benutzer freigegeben:
HTH
quelle
Hier ist die einfache Methode, die wir hier bei der Generierung der CSV-Datei verwenden. Sie ändert die Werte ein wenig, sodass sie nicht für alle Anwendungen geeignet ist:
Stellen Sie allen Werten in der CSV ein Leerzeichen voran
Dieser Bereich wird durch Excel von Zahlen wie "1", "2.3" und "-2.9e4" entfernt, bleibt jedoch an Daten wie "01/10/1993" und Booleschen Werten wie "TRUE" erhalten und verhindert, dass sie in konvertiert werden interne Datentypen von Excel.
Es verhindert auch, dass doppelte Anführungszeichen beim Einlesen gezappt werden, sodass eine kinderleichte Methode zum Erstellen von Text in einer CSV durch Excel unverändert bleibt, AUCH WENN ein Text wie "3.1415" darin besteht, ihn mit doppelten Anführungszeichen zu umgeben UND der gesamten Zeichenfolge ein Leerzeichen voranzustellen. dh (mit einfachen Anführungszeichen, um zu zeigen, was Sie eingeben würden) '"3.1415"'. Dann haben Sie in Excel immer die ursprüngliche Zeichenfolge, außer dass sie von doppelten Anführungszeichen umgeben und durch ein Leerzeichen vorangestellt ist, sodass Sie diese in beliebigen Formeln usw. berücksichtigen müssen.
quelle
"\xA0"
stattdessen einen nicht unterbrechenden Bereich verwenden - das wird funktionieren.(Angenommen, Excel 2003 ...)
Wenn Sie den Text-zu-Spalten-Assistenten verwenden, können Sie in Schritt 3 den Datentyp für jede der Spalten festlegen. Klicken Sie auf die Spalte in der Vorschau und ändern Sie die Spalte "Fehlverhalten" von "Allgemein" in "Text".
quelle
Dies ist eine einzige Möglichkeit, wie ich dies erreichen kann, ohne die Datei selbst durcheinander zu bringen. Wie bei Excel üblich, habe ich dies gelernt, indem ich stundenlang mit dem Kopf auf den Schreibtisch geschlagen habe.
Ändern Sie die CSV-Dateierweiterung in .txt. Dadurch wird verhindert, dass Excel die Datei beim Öffnen automatisch konvertiert. So mache ich das: Öffnen Sie Excel für ein leeres Arbeitsblatt, schließen Sie das leere Blatt, dann Datei => Öffnen und wählen Sie Ihre Datei mit der Erweiterung .txt aus. Dies zwingt Excel, den "Textimport-Assistenten" zu öffnen, in dem Sie gefragt werden, wie die Datei interpretiert werden soll. Zuerst wählen Sie Ihr Trennzeichen (Komma, Tabulator usw.), dann (hier ist der wichtige Teil) eine festgelegte Spalte mit Spalten und wählen die Formatierung aus. Wenn Sie genau wissen möchten, was in der Datei enthalten ist, wählen Sie "Text". In Excel wird nur angezeigt, was sich zwischen den Trennzeichen befindet.
quelle
awk
Vermeiden Sie die Neuformatierung datumsähnlicher Werte , wenn das Problem eher bei Excel liegt alsawk
trotz des Fragentitels.(EXCEL 2007 und höher)
So erzwingen Sie, dass Excel Datumsformate nicht "erkennt", ohne die Quelldatei zu bearbeiten
Entweder:
Data > Get external data > From Text
und wählen Sie dann Ihre CSV aus.
In beiden Fällen werden Ihnen Importoptionen angezeigt. Wählen Sie einfach jede Spalte mit Datumsangaben aus und weisen Sie Excel an, das Format als "Text" und nicht als "Allgemein" zu formatieren.
quelle
Was ich für dasselbe Problem getan habe, war, vor jedem CSV-Wert Folgendes hinzuzufügen: "=" "" und ein doppeltes Anführungszeichen nach jedem CSV-Wert, bevor die Datei in Excel geöffnet wurde. Nehmen Sie zum Beispiel die folgenden Werte:
Diese sollten vor dem Öffnen in Excel geändert werden, um:
Danach wird jeder Zellenwert in Excel als Formel angezeigt und daher nicht als Zahl, Datum usw. formatiert. Der Wert 012345 wird beispielsweise wie folgt angezeigt:
quelle
1234500198475E-8
; Auf diese Weise sind weitere Berechnungen in Excel möglich.Keine der hier angebotenen Lösungen ist eine gute Lösung. Dies kann in Einzelfällen funktionieren, jedoch nur, wenn Sie die Kontrolle über die endgültige Anzeige haben. Nehmen Sie mein Beispiel: Meine Arbeit erstellt eine Liste der Produkte, die sie an den Einzelhandel verkaufen. Dies ist im CSV-Format und enthält Teilcodes, von denen einige mit Nullen beginnen, die vom Hersteller festgelegt wurden (nicht unter unserer Kontrolle). Nehmen Sie die führenden Nullen weg, und Sie können tatsächlich mit einem anderen Produkt übereinstimmen. Privatkunden möchten die Liste im CSV-Format, da Back-End-Verarbeitungsprogramme ebenfalls außerhalb unserer Kontrolle liegen und sich je nach Kunde unterscheiden. Daher können wir das Format der CSV-Dateien nicht ändern. Kein vorangestelltes '=' und keine hinzugefügten Registerkarten. Die Daten in den CSV-Rohdateien sind korrekt. Wenn Kunden diese Dateien in Excel öffnen, beginnen die Probleme. Und viele Kunden sind nicht wirklich Computer-versiert. Sie können fast einen E-Mail-Anhang öffnen und speichern. Wir denken darüber nach, die Daten in zwei leicht unterschiedlichen Formaten bereitzustellen: eines als Excel-freundlich (unter Verwendung der oben vorgeschlagenen Optionen durch Hinzufügen eines TAB, das andere als "Master". Dies kann jedoch ein Wunschdenken sein, da einige Kunden nicht verstehen, warum Wir müssen dies tun. In der Zwischenzeit erklären wir immer wieder, warum sie manchmal "falsche" Daten in ihren Tabellen sehen. Bis Microsoft eine ordnungsgemäße Änderung vornimmt, sehe ich keine angemessene Lösung dafür, solange man keine Kontrolle darüber hat, wie Endbenutzer Verwenden Sie die Dateien. Dies kann jedoch ein Wunschdenken sein, da einige Kunden nicht verstehen, warum wir dies tun müssen. In der Zwischenzeit erklären wir immer wieder, warum sie manchmal "falsche" Daten in ihren Tabellen sehen. Bis Microsoft eine ordnungsgemäße Änderung vornimmt, sehe ich keine ordnungsgemäße Lösung dafür, solange man keine Kontrolle darüber hat, wie Endbenutzer die Dateien verwenden. Dies kann jedoch ein Wunschdenken sein, da einige Kunden nicht verstehen, warum wir dies tun müssen. In der Zwischenzeit erklären wir immer wieder, warum sie manchmal "falsche" Daten in ihren Tabellen sehen. Bis Microsoft eine ordnungsgemäße Änderung vornimmt, sehe ich keine ordnungsgemäße Lösung dafür, solange man keine Kontrolle darüber hat, wie Endbenutzer die Dateien verwenden.
quelle
"\xA0"
Ihren Daten einen vorangestellten (nicht unterbrechenden Speicherplatz) voranstellen .Ich bin diese Woche auf diese Konvention gestoßen, die ein ausgezeichneter Ansatz zu sein scheint, aber ich kann sie nirgendwo finden, auf die verwiesen wird. Ist jemand damit vertraut? Können Sie eine Quelle dafür zitieren? Ich habe nicht stundenlang gesucht, hoffe aber, dass jemand diesen Ansatz erkennt.
Beispiel 1: = ("012345678905") wird angezeigt als 012345678905
Beispiel 2: = ("1954-12-12") wird als 1954-12-12 angezeigt , nicht als 12/12/1954 .
quelle
Es ist nicht das Excel. Windows erkennt die Formel, die Daten als Datum und korrigiert sie automatisch. Sie müssen die Windows-Einstellungen ändern.
"Systemsteuerung" (-> "Zur klassischen Ansicht wechseln") -> "Regional- und Sprachoptionen" -> Registerkarte "Regionaloptionen" -> "Anpassen ..." -> Registerkarte "Zahlen" -> Ändern Sie dann die Symbole je nachdem was du willst.
http://www.pcreview.co.uk/forums/enable-disable-auto-convert-number-date-t3791902.html
Dies funktioniert auf Ihrem Computer. Wenn diese Einstellungen beispielsweise auf dem Computer Ihrer Kunden nicht geändert werden, werden anstelle von Daten Datumsangaben angezeigt.
quelle
Hallo, ich habe das gleiche Problem,
Ich schreibe dieses vbscipt, um eine andere CSV-Datei zu erstellen. Die neue CSV-Datei enthält in jedem Feld ein Leerzeichen in der Schriftart, sodass Excel es als Text versteht.
Sie erstellen also eine .vbs-Datei mit dem folgenden Code (z. B. Modify_CSV.vbs), speichern und schließen sie. Ziehen Sie Ihre Originaldatei per Drag & Drop in Ihre vbscript-Datei. Es wird eine neue Datei mit "SPACE_ADDED" zum Dateinamen am selben Speicherort erstellt.
quelle
Ohne Ihre CSV-Datei zu ändern, können Sie:
Excel formatiert und trennt Ihre CSV-Zellen ordnungsgemäß als Textformat, wobei automatische Datumsformate ignoriert werden.
Eine Art alberne Umgehung, aber es ist besser, die CSV-Daten vor dem Import zu ändern. Andy Baird und Richard haben sich dieser Methode irgendwie entzogen, aber ein paar wichtige Schritte verpasst.
quelle
Ich weiß, dass dies ein alter Thread ist. Für diejenigen wie mich, die immer noch dieses Problem mit Office 2013 über das Powershell-Com-Objekt haben, kann die Opentext-Methode verwendet werden . Das Problem ist, dass diese Methode viele Argumente hat, die sich manchmal gegenseitig ausschließen. Um dieses Problem zu beheben, können Sie die in diesem Beitrag vorgestellte Methode invoke-namedparameter verwenden . Ein Beispiel wäre
Leider habe ich gerade entdeckt, dass diese Methode die CSV-Analyse irgendwie unterbricht, wenn Zellen Zeilenumbrüche enthalten. Dies wird von csv unterstützt, aber die Implementierung von Microsoft scheint fehlerhaft zu sein. Außerdem wurden deutsche spezifische Zeichen irgendwie nicht erkannt. Die richtige Kultur zu geben, änderte nichts an diesem Verhalten. Alle Dateien (CSV und Skript) werden mit utf8-Codierung gespeichert. Zuerst habe ich den folgenden Code geschrieben, um die CSV Zelle für Zelle einzufügen.
Aber das ist extrem langsam, weshalb ich nach einer Alternative gesucht habe. Anscheinend können Sie in Excel die Werte eines Zellbereichs mit einer Matrix festlegen. Also habe ich den Algorithmus in diesem Blog verwendet, um die CSV in ein Multiarray umzuwandeln.
Sie können den obigen Code so verwenden, wie er alle CSVs in Excel konvertieren sollte. Ändern Sie einfach den Pfad zum CSV und dem Trennzeichen unten.
quelle
In meinem Fall wurde "Sept8" in einer mit R generierten CSV-Datei von Excel 2013 in "8-Sept" konvertiert. Das Problem wurde mithilfe der Funktion write.xlsx2 () im xlsx-Paket gelöst, um die Ausgabedatei im xlsx-Format zu generieren , die von Excel ohne unerwünschte Konvertierung geladen werden kann. Wenn Sie also eine CSV-Datei erhalten, können Sie versuchen, sie in R zu laden und mit der Funktion write.xlsx2 () in xlsx zu konvertieren.
quelle
Eine Problemumgehung mit Google Drive (oder Numbers, wenn Sie einen Mac verwenden):
Wenn Sie für Schritt 3 einen Mac verwenden, können Sie die Daten auch in Zahlen öffnen.
quelle
(EXCEL 2016 und höher, eigentlich habe ich es in älteren Versionen nicht versucht)
quelle
Okay, ich habe in Excel 2003 bis 2007 einen einfachen Weg gefunden, dies zu tun. Öffnen Sie eine leere XLS-Arbeitsmappe. Gehen Sie dann zum Menü Daten und importieren Sie externe Daten. Wählen Sie Ihre CSV-Datei. Gehen Sie durch den Assistenten und wählen Sie dann im "Spaltendatenformat" eine Spalte aus, die zu "Text" gezwungen werden muss. Dadurch wird die gesamte Spalte als Textformat importiert, sodass Excel nicht versucht, bestimmte Zellen als Datum zu behandeln.
quelle
Dieses Problem ist in Mac Office 2011 und Office 2013 immer noch vorhanden. Ich kann es nicht verhindern. Es scheint so eine grundlegende Sache.
In meinem Fall hatte ich Werte wie "1 - 2" und "7 - 12" in der CSV, die korrekt in Anführungszeichen eingeschlossen waren. Dies wird automatisch in ein Datum in Excel konvertiert, wenn Sie versuchen, es anschließend in einfachen Text zu konvertieren, den Sie erhalten würden eine Zahlendarstellung des Datums wie 43768. Außerdem werden große Zahlen in Barcodes und EAN-Nummern erneut in 123E + -Nummern formatiert, die nicht zurückkonvertiert werden können.
Ich habe festgestellt, dass Google Sheets von Google Drive die Zahlen nicht in Datumsangaben konvertiert. Die Barcodes enthalten alle 3 Zeichen Kommas, die jedoch leicht entfernt werden können. Es verarbeitet CSVs sehr gut, insbesondere im Umgang mit MAC / Windows-CSVs.
Könnte irgendwann jemanden retten.
quelle
EINFACHSTE LÖSUNG Ich habe das heute gerade herausgefunden.
Sobald Sie mit der Bearbeitung fertig sind, können Sie es jederzeit wieder in Word öffnen, um die Bindestriche wieder durch Bindestriche zu ersetzen.
quelle
Ich mache das für Kreditkartennummern, die immer wieder in wissenschaftliche Notation konvertiert werden: Am Ende importiere ich meine CSV-Datei in Google Sheets. Mit den Importoptionen kann jetzt die automatische Formatierung numerischer Werte deaktiviert werden. Ich setze alle sensiblen Spalten auf Nur Text und lade sie als xlsx herunter.
Es ist ein schrecklicher Workflow, aber zumindest bleiben meine Werte so, wie sie sein sollten.
quelle
Ich habe dieses vba-Makro erstellt, das den Ausgabebereich vor dem Einfügen der Zahlen im Grunde genommen als Text formatiert. Funktioniert perfekt für mich, wenn ich Werte wie 8/11, 23/6, 1/3 usw. einfügen möchte, ohne dass Excel sie als Datumsangaben interpretiert.
Ich bin sehr daran interessiert zu wissen, ob dies auch für andere Menschen funktioniert. Ich habe eine Weile nach einer Lösung für dieses Problem gesucht, aber ich habe noch keine schnelle vba-Lösung dafür gefunden, bei der das Einfügen vor dem Eingabetext nicht enthalten war. Dieser Code behält die Daten in ihrer ursprünglichen Form bei.
quelle
Wenn Sie am Anfang des Feldes ein Anführungszeichen setzen, wird es als Text interpretiert.
Beispiel:
25/12/2008
wird'25/12/2008
Sie können beim Importieren auch den Feldtyp auswählen.
quelle
Eine alternative Methode:
Konvertieren Sie das Format der Spalte, die Sie ändern möchten, in "Text". Wählen Sie alle Zellen aus, die Sie beibehalten und kopieren möchten. Klicken Sie auf "Bearbeiten> Inhalte einfügen> Als Werte", ohne die Auswahl dieser Spalten aufzuheben.
Als CSV speichern. Beachten Sie, dass dies das letzte sein muss, was Sie mit der Datei tun, da sie sich beim erneuten Öffnen selbst als Datum formatiert, da Zellformate nicht in CSV-Dateien gespeichert werden können.
quelle