Obwohl ich versuche, dies zu vermeiden, muss ich gelegentlich eine CSV-Datei in Excel öffnen. Wenn ich das tue, formatiert es Spalten, die Zahlen enthalten, was sie für meine Zwecke unbrauchbar macht. Soweit ich das beurteilen kann, besteht die einzige Möglichkeit, dies beim Import zu verhindern , darin, die Datei umzubenennen, sodass die Erweiterung nicht CSV lautet, und mithilfe des Importassistenten das Format jeder Spalte einzeln festzulegen. Bei Dateien mit 50-60 Spalten ist dies nicht praktikabel.
Da jede Antwort auf diese häufig gestellte Frage im Internet entweder eine Möglichkeit zum Zurückkonvertieren der formatierten Zahlen nach dem Öffnen der Datei vorsieht (was bei mir nicht funktioniert - ich möchte das allgemeine Problem lösen, nicht ein paar spezielle Fälle) Bei der manuellen Auswahl des Formattyps für jede Spalte (was ich nicht tun möchte) suche ich nach einer Möglichkeit, eine globale Voreinstellung oder einen globalen Stil so festzulegen, dass alle Spalten aller geöffneten CSV-Dateien immer als Text formatiert werden. Ich weiß, wie man die Zahlen auch mit Anführungszeichen "panzert", aber die Dateien, die ich bekomme, kommen nicht so und ich hatte gehofft, dass ich die Dateien nicht vorverarbeiten muss, damit Excel sie nicht vermasselt.
Gibt es eine Möglichkeit zu tun , speziell diese: Immer alle Spalten formatiert in geöffneten CSV - Dateien als Text, ohne manuell jeden Spalte jedes Mal beim Import der Auswahl?
Ich verwende Excel 2003, nehme aber Antworten für 2007, wenn Sie das wissen.
quelle
Antworten:
Das funktioniert:
Verwendungszweck:
Kommagetrennte Datei ist jetzt als Excel-Tabelle geöffnet, wobei alle Spalten als Text formatiert sind.
Beachten Sie, dass die Assistentenlösung von @ Wetmelon einwandfrei funktioniert. Wenn Sie jedoch viele Dateien öffnen, werden Sie wie ich jedes Mal müde, wenn Sie zur Spalte 60 blättern, um sie mit gedrückter Umschalttaste anzuklicken.
EDIT @GSerg gibt im Kommentar unten an, dass dies "nicht funktioniert" und "Leerzeichen und führende Nullen frisst". Ich zitiere nur den Kommentar zu der Frage, der aussagekräftiger ist:
Der obige Code "funktioniert" also, wird aber durch dieses lächerliche Excel-Verhalten getötet. Wie auch immer Sie es schneiden, Sie müssen die Erweiterung nicht mehr auf ".csv" ändern, sorry! Danach bist du frei zu Hause.
quelle
Workbooks.OpenText
weist konstruktionsbedingte Mängel auf (siehe meine Antwort unten). Verwenden SieQueryTables
stattdessen.So öffnen Sie CSVs in Excel
Gute Möglichkeit
Excel → Daten → Externe Daten abrufen → Markieren Sie alle Spalten mit Shiftund wählen Sie Text
Oben: Behandelt alle Werte ausnahmslos korrekt als Text
Nachteil: Mehr Schritte als ein einfacher Doppelklick
Schlechter Weg
Öffnen Sie eine CSV-Datei mit einem Doppelklick oder im Excel- Dialogfeld Öffnen mit
Nachteil: Der interne CSV-Handler von Excel interpretiert Werte mit einem Führungs-
-
oder=
Vorzeichen als Formel und nicht als Text falschNachteil: Sie verlieren führende Nullen aus Binärwerten, wie dies
0001
durch das automatisch erkannte Spaltenformat von Excel verursacht wirdGuter Weg (für VBA)
Verwenden Sie QueryTables (das Gegenstück zu VBA
Get external data
) → BeispielcodeOben: Behandelt alle Werte ausnahmslos korrekt als Text
Nachteil: Etwas mehr Code als
OpenText
MethodeSchlechter Weg (für VBA)
Verwenden Sie
Workbooks.OpenText
Methode → BeispielcodeNachteil: Diese Methode verwendet immer noch den internen CSV-Import-Handler von Excel mit all seinen Fehlern
Nachteil: Zusätzlich wird der
fieldinfo
Parameter vonOpenText
ignoriert, wenn die Erweiterung CSV ist. Normalerweise können Sie mit diesem Parameter jedes Spaltenformat auswählen, jedoch nicht, wenn die Erweiterung CSV ist. Weitere Informationen zu diesem Verhalten finden Sie unter StapelüberlaufDas vorübergehende Umbenennen der Quelldatei von CSV in TXT und dann wieder in CSV ist eine gültige Problemumgehung, wenn Sie die vollständige Kontrolle über die Quelldatei haben
Zusätzliche Methoden
Wenn Sie Zugriff auf die Quelle haben, die Ihre CSV erstellt, können Sie die CSV-Syntax ändern.
Schließen Sie jeden Wert in doppelte Anführungszeichen ein und stellen Sie jedem Wert ein Gleichheitszeichen
="00001"
voran. In beiden Fällen wird Excel gezwungen, den Wert als Text zu behandelnUrsprünglicher CSV-Inhalt
CSV in Excel beim Öffnen per Doppelklick
Beachten Sie, dass Zeile 2 (doppelte Anführungszeichenmethode) und Zeile 3 (Tabulatormethode) von Excel nicht geändert werden
Öffnen Sie CSV im Editor und kopieren Sie alle Werte in Excel. Verwenden Sie dann Daten - Text in Spaltenunten: Text in Spalten, um die Spaltenformate von Allgemein zurück in Text zu ändern und inkonsistente Ergebnisse zu erzielen. Wenn ein Wert ein
-
von Zeichen umgebenes Zeichen enthält (z. B. "= E1-S1"), versucht Excel, diesen Wert in mehrere Spalten aufzuteilen. Werte, die sich direkt in dieser Zelle befinden, werden möglicherweise überschrieben.(Das Verhalten von Text in Spalten wurde zwischen Excel 2007 und 2013 geändert, sodass es nicht mehr funktioniert.)
Excel-Add-In zum Öffnen von CSVs und Importieren aller Werte als Text
Dies ist ein Excel-Plug-In zur Vereinfachung von CSV-Importaktionen.
Der Hauptvorteil: Es handelt sich um eine Ein-Klick-Lösung
QueryTables
, die dieselbe kugelsichere Methode wie beim Abrufen externer Daten verwendetInstallation
%appdata%\Microsoft\AddIns
File tab → Options → Add-Ins → Go To
und wählen SieImportCSV.xla
File tab → Options → Trust Center → Trust Center Settings → Macro Settings → Enable all macros
Sie werden einen neuen Menüleisteneintrag mit dem Namen Add-Ins bemerken, und mit dieser Schaltfläche können Sie Ihre CSV-Dateien schnell öffnen, ohne den Aufwand des Dialogfelds "Importieren" durchlaufen zu müssen
PowerShell-Skript zum Öffnen von CSVs direkt aus dem Windows Explorer
Mit einem PowerShell-Skript können Sie CSV-Dateien öffnen und automatisch an Excel übergeben. Das Skript verwendet im Hintergrund die Textimportmethode von Excel, die Werte immer als Text behandelt und als Bonus die UTF-8-Codierung verarbeitet
C:\my\folder\myScript.ps1
. (Beachten Sie die Erweiterung.ps1
)shell:sendto
» EnterJetzt können Sie (mehrere) CSVs auswählen und über in Excel öffnen
Right-click » SendTo » Excel
quelle
Sie können es versuchen, indem Sie zuerst eine XLSX-Datei öffnen, dann eine Datenverbindung herstellen und die CSV-Datei importieren. Wählen Sie "Komma" als Trennzeichen und dann die Option, alle Spalten als Text anstatt als "Allgemein" zu behandeln.
Edit: Oh, ich habe die Frage nicht vollständig gelesen. Wählen Sie im Importassistenten die erste Spaltenüberschrift aus, die Sie als Text importieren möchten, navigieren Sie zur letzten Spaltenüberschrift und klicken Sie bei gedrückter Umschalttaste auf die Überschrift. Wählen Sie dann die radiale Option "Text".
quelle
Der Vorschlag von Wetmelon funktioniert (auch mit CSV), wenn Sie Folgendes tun:
Ich weiß, dass es mehr Schritte sind, aber zumindest kann ich CSVs auf diese Weise öffnen, ohne die Erweiterung ändern zu müssen
quelle
Achtung!
Bei Verwendung der manuellen Methode "Excel → Daten → Externe Daten abrufen → Alle Spalten auswählen und Text auswählen" ......
Dadurch werden nur die Spalten auf "Text mit Daten in der ersten Zeile" gesetzt (normalerweise eine Kopfzeile). Dieser Assistent zeigt Ihnen nicht die Spalten weiter rechts an, in denen möglicherweise Daten weiter unten, jedoch nicht in der ersten Zeile enthalten sind. Zum Beispiel:
Row1Col1, Row1Col2, Row1Col3
Row2Col1, Row2Col2, Row2Col3, Row2Col4
Sie werden Col 4 nie im Import-Assistenten sehen, so dass Sie nicht die Möglichkeit haben, es vor dem Import vom allgemeinen in das Textformat zu ändern !!!!
quelle
Hier ist die alternative Vorgehensweise zu Code, der oben von Jean-François Corbett veröffentlicht wurde
Mit dieser Prozedur wird eine CSV-Datei mit allen als Text formatierten Spalten in Excel importiert
quelle
Wenn Sie immer dieselben Daten importieren (konstantes Datensatzformat, Layout usw.), können Sie ein Access-Makro mithilfe einer Importspezifikation schreiben und die Daten dann wieder in Excel ausgeben. Fertig kann das mal sein. Die andere Möglichkeit besteht darin, VBA zu verwenden und die Daten einzeln in das Arbeitsblatt einzulesen und beim Lesen auszulesen. Soweit mir bekannt ist, gibt es keine Möglichkeit, beim Import in Excel ein Standardformat festzulegen, und selbst wenn dies möglich wäre, würde dies beim nächsten Dateityp, den Sie analysieren möchten, Probleme verursachen.
quelle
Als Aufforderung, meinen Kommentar als Antwort zu übermitteln (mit ein wenig mehr Info):
Hey Scripting Guy hat einen Blog-Artikel über das Importieren von CSV in Excel verfasst , der möglicherweise einige nützliche Details für Sie enthält. Wenn Sie mit dem Datenobjekt in Powershell spielen, können Sie möglicherweise tun, was Sie möchten.
Obwohl der Artikel speziell nur das Importieren der Daten in die Zellen erwähnt, die möglicherweise das Zahlenformat verlassen, ist es möglicherweise möglich, mit einigen der Excel ComObject-Eigenschaften und -Methoden zu spielen, um die Daten zu zwingen, stattdessen als Rohtext in die Zellen einzugeben (oder zu erzwingen) die Formatierung der Zellen in Text vor oder nach dem Import).
quelle
Auch wenn Sie explizit Formate für alle Spalten angeben, wird Excel aus unbekannten Gründen ignoriert, wenn die Dateierweiterung CSV lautet.
Einige Optionen:
Erstellen Sie eine Abfrage , um die Daten zu importieren, wie Wetmelon schlägt .
Nachteil: Auf einem 64-Bit-Computer fehlen möglicherweise CSV-Datenbanktreiber.
Verwenden Sie den Code von Jean , kopieren Sie die Datei jedoch in einen temporären Ordner und ändern Sie die Erweiterung der Kopie.
Nachteil: Keine Verknüpfung zur Originaldatei (Speichern überschreibt die Kopie); Sie müssen die Kopie anschließend manuell löschen. Sie können jedoch manuell über die ursprüngliche CSV-Datei als speichern.
Öffnen Sie die CSV in dem Editor Ctrl+A, Ctrl+C, fügen Sie in Excel, dann Daten - Text in Spalten, dann ist sie die üblichen Assistenten , wo Sie alle Spalten festlegen können in einem Rutsch Text. Es ist eine andere Variante der vorherigen Option, da es auch die wertvolle Erweiterung von Excel verbirgt.
Nachteil: manuell.
Haben Sie eine sehr einfache VBA-Schleife, die die gesamte Datei in den Speicher liest und sie Zelle für Zelle auf das Blatt legt.
Nachteil: langsamer, hässlich.
quelle
Wenn ich die Frage richtig verstanden hat , ist dies leicht wie beschrieben mit der Transponierung Option in Paste-Spezial gelöst hier .
quelle