Excel CSV - Zahlenzellenformat

85

Ich erstelle einen Bericht als CSV-Datei. Wenn ich versuche, die Datei in Excel zu öffnen, wird basierend auf dem Inhalt der Zelle eine Annahme über den Datentyp getroffen und entsprechend neu formatiert.

Zum Beispiel, wenn die CSV-Datei enthält

...,005,...

Dann zeigt Excel es als 5. Gibt es eine Möglichkeit, dies zu überschreiben und 005 anzuzeigen?

Ich würde es vorziehen, etwas mit der Datei selbst zu tun, damit der Benutzer einfach auf die CSV-Datei doppelklicken kann, um sie zu öffnen.

Ich benutze Excel 2003.

Sergey Stadnik
quelle
In dieser Frage finden Sie eine Makrolösung für dieses Problem.
Adam Jensen
Heutzutage gibt es viele Excel-Schreibbibliotheken. Es sollte ziemlich einfach sein, XLSX-Dateien in der Sprache Ihrer Wahl zu erstellen. Wenn Ihre Benutzer aus irgendeinem Grund immer noch Excel 2003 verwenden (häufig, als diese Frage ursprünglich gestellt wurde, aber heute hoffentlich nicht sehr wahrscheinlich), gibt es auch einige XLS-Optionen. Für Leute, die heute über diese Frage stolpern, ist es sehr wahrscheinlich, dass Sie Ihre eigene nicht rollen müssen.
John Y

Antworten:

128

Es gibt keine einfache Möglichkeit, die Formatierung zu steuern, die Excel beim Öffnen einer CSV-Datei anwendet. Im Folgenden sind jedoch drei Ansätze aufgeführt, die hilfreich sein könnten.

Meine Präferenz ist die erste Option.

Option 1 - Ändern Sie die Daten in der Datei

Sie können die Daten in der CSV-Datei wie folgt ändern ..., = ”005” , ... Dies wird in Excel als ..., 005 , ... angezeigt.

Excel hat die Daten als Formel beibehalten, aber durch Kopieren der Spalte und Verwenden von Sonderwerten zum Einfügen wird die Formel entfernt, die Formatierung bleibt jedoch erhalten

Option 2 - Formatieren Sie die Daten

Wenn es sich lediglich um ein Formatproblem handelt und alle Ihre Daten in dieser Spalte eine dreistellige Länge haben. Öffnen Sie dann die Daten in Excel und formatieren Sie die Spalte mit den Daten mit diesem benutzerdefinierten Format 000

Option 3 - Ändern Sie die Dateierweiterung in .dif (Datenaustauschformat)

Ändern Sie die Dateierweiterung und steuern Sie die Formate mit dem Dateiimport-Assistenten. Dateien mit der Erweiterung .dif werden bei Doppelklick automatisch von Excel geöffnet.

Schritt für Schritt:

  • Ändern Sie die Dateierweiterung von .csv in .dif
  • Doppelklicken Sie auf die Datei, um sie in Excel zu öffnen.
  • Der 'Dateiimport-Assistent' wird gestartet.
  • Stellen Sie den 'Dateityp' auf 'Begrenzt' und klicken Sie auf die Schaltfläche 'Weiter'.
  • Aktivieren Sie unter Trennzeichen 'Komma' und klicken Sie auf die Schaltfläche 'Weiter'.
  • Klicken Sie auf jede Spalte Ihrer angezeigten Daten und wählen Sie ein 'Spaltendatenformat' aus. Die Spalte mit dem Wert '005' sollte als 'Text' formatiert sein.
  • Klicken Sie auf die Schaltfläche Fertig stellen. Die Datei wird von Excel in den von Ihnen angegebenen Formaten geöffnet.
Robert Mearns
quelle
8
.dif hat auf meinem Computer nicht funktioniert; Das manuelle Öffnen mit Excel 2007 hat nicht funktioniert (warnte mich, dass der Dateityp von der Erweiterung abweicht) und es sieht so aus, als ob .DIF auf vielen Computern mit Quicktime verknüpft ist. Nur zu Ihrer Information :) Ansonsten tolle Tipps!
Nicholas
15
Ich denke, Option 1 ist die beste, wenn Sie problemlos eine Datei generieren möchten, die "einfach funktioniert" - dh sie wird auf dem Computer des Benutzers in Excel geöffnet, ohne dass zusätzliche Arbeiten erforderlich sind.
Kip
Ich habe das gleiche Problem, und keines der oben genannten Probleme ist angemessen. Ich denke, ich könnte als XML exportieren und XSLT verwenden, um zu CSV zu gelangen. Ich brauche die CSV-Datei, um korrekt zu sein, damit sie in eine andere Anwendung importiert werden kann
Matt
1
Bitte beachten Sie, dass Option 1 nicht immer gut ist. Wenn Sie eine Zelle mit der Bezeichnung "1E02, welcher Text auch immer" haben und dann eine Gleichheit voranstellen, stellt sich Excel vor, dass Sie eine Formel eingegeben haben. Erstens ist die Formel falsch, aber zweitens und vor allem wird Ihr Text auf zwei Zellen aufgeteilt.
Ghiscoding
1
Vielen Dank für Option 1. Mein wissenschaftliches Notationsproblem wurde ohne zusätzliche Arbeit behoben.
NaN
28

Verwenden Sie kein CSV, sondern SYLK.
http://en.wikipedia.org/wiki/SYmbolic_LinK_(SYLK)

Es gibt viel mehr Kontrolle über die Formatierung, und Excel wird nicht versuchen, den Typ eines Feldes durch Untersuchen des Inhalts zu erraten. Es sieht ein bisschen kompliziert aus, aber Sie können mit einer sehr kleinen Teilmenge davonkommen.

Mark Ransom
quelle
2
+1 Das Schreiben in SYLK ist einfach zu implementieren, ich habe es als Anfänger gemacht.
Matt H
1
Ich wusste nichts über dieses Format. Es sieht aus wie etwas, das ich gebrauchen könnte. +1 dafür!
Buggabill
+1 Ich habe fünf Minuten gebraucht, um von CSV zu SYLK zu wechseln. Mein gehe zu Ausgabeformat von nun an!
TheFish
@xamde, du hast recht. Es ist seltsam, dass sie das Format nie erweitert haben, um es zu unterstützen, wie sie es bei RTF getan haben.
Mark Ransom
WTF, oder was würde jemand empfehlen, zitiere ich aus Wikipedia: "Microsoft veröffentlicht keine SYLK-Spezifikation."
Sorin
14

Dies funktioniert für Microsoft Office 2010, Excel Version 14

Ich habe die Präferenz des OP "etwas mit der Datei selbst zu tun" falsch verstanden. Ich behalte dies immer noch für diejenigen, die eine Lösung wünschen, um den Import direkt zu formatieren

  1. Öffnen Sie eine leere (neue) Datei (Datei -> Neu aus Arbeitsmappe)
  2. Öffnen Sie den Import-Assistenten (Daten -> Aus Text)
  3. Wählen Sie Ihre CSV-Datei und dann Importieren
  4. Wählen Sie im Dialogfeld "Begrenzt" und klicken Sie auf "Weiter".
  5. Wählen Sie Ihre Trennzeichen (deaktivieren Sie alles außer "Komma"), wählen Sie Ihre Textqualifizierer (wahrscheinlich {Keine}) und klicken Sie auf "Weiter"
  6. In der Datenvorschau Feld wählen Sie den Spalt Text sein sollen. Es sollte hervorheben.
  7. In der Spalte Datenformat Feld, wählen Sie ‚Text‘.
  8. Klicken Sie auf Fertig.

quelle
erklärt mit Bildern: support.insight.ly/hc/en-us/articles/…
Yo Ludke
2

Sie können Ihren Bereich einfach als Text formatieren.

Auch hier ist ein schöner Artikel über die Zahlenformate und wie man sie programmieren kann.

Ólafur Waage
quelle
Dies wirkt sich nur darauf aus, wie der Wert angezeigt wird. Sie müssen es in Text konvertieren, entweder mit einer Formel oder während des Imports, mit einer der vielen Methoden in diesem Thread
Leo
2

Eigentlich habe ich festgestellt, dass Sie zumindest ab Office 2003 eine Excel-Tabelle als XML-Datei speichern können. Auf diese Weise kann ich eine XML-Datei erstellen. Wenn ich darauf doppelklicke, wird sie in Excel geöffnet. Es bietet die gleiche Kontrollebene wie SYLK, die XML-Syntax ist jedoch intuitiver.

Sergey Stadnik
quelle
2

Das Hinzufügen eines nicht unterbrechenden Bereichs in der Zelle könnte hilfreich sein. Zum Beispiel: "firstvalue";"secondvalue";"005 ";"othervalue"

Es zwingt Excel, es als Text zu behandeln, und der Bereich ist nicht sichtbar. Unter Windows können Sie ein nicht unterbrechendes Leerzeichen hinzufügen, indem Sie Alt + 0160 eingeben. Weitere Informationen finden Sie hier: http://en.wikipedia.org/wiki/Non-breaking_space

Versucht in Excel 2010. Ich hoffe, dies kann Menschen helfen, die immer noch nach einer geeigneten Lösung für dieses Problem suchen.

Kloe2378231
quelle
2

Ich hatte dieses Problem beim Exportieren von CSV-Daten aus C # -Code und habe es behoben, indem ich den führenden Nulldaten das Tabulatorzeichen \ t voranstellte, sodass die Daten in Excel eher als Text als als numerisch interpretiert wurden (im Gegensatz zu anderen Zeichen jedoch nicht). nicht gesehen werden).

Ich mochte den Ansatz = "001", aber dies würde nicht ermöglichen, dass exportierte CSV-Daten erneut in meine C # -Anwendung importiert werden, ohne all diese Formatierungen aus der Import-CSV-Datei zu entfernen (stattdessen schneide ich nur die Importdaten ab). .

Richard Pursehouse
quelle
1

Ich glaube, wenn Sie die Datei importieren, können Sie den Spaltentyp auswählen. Machen Sie es Text statt Zahl. Ich habe momentan keine Kopie vor mir, die ich überprüfen könnte.

Harley Holcombe
quelle
1

Laden Sie csv in oleDB und zwingen Sie alle abgeleiteten Datentypen zur Zeichenfolge

Ich stellte die gleiche Frage und beantwortete sie dann mit Code.

Wenn die CSV-Datei geladen wird, trifft der Oledb-Treiber im Grunde genommen Annahmen. Sie können ihm mitteilen, welche Annahmen zu treffen sind.

Mein Code zwingt jedoch alle Datentypen zur Zeichenfolge ... es ist sehr einfach, das Schema zu ändern. Für meine Zwecke habe ich ein xslt verwendet, um ti so zu bekommen, wie ich es wollte - aber ich analysiere eine Vielzahl von Dateien.

John Nicholas
quelle
1

Ich weiß, dass dies eine alte Frage ist, aber ich habe eine Lösung, die hier nicht aufgeführt ist.

Wenn Sie die CSV erstellen, fügen Sie ein Leerzeichen nach dem Komma, aber vor Ihrem Wert ein, z , 005, .

Dies hat sowieso dazu beigetragen, die automatische Datumsformatierung in Excel 2007 zu verhindern.

plntxt
quelle
2
Gerade getestet, scheint nicht mit Excel 2007 und einer Zahlenspalte zu funktionieren. : - /
Norman H
1

Die Methode des Textimport-Assistenten funktioniert NICHT, wenn die zu importierende CSV-Datei Zeilenumbrüche in einer Zelle enthält. Diese Methode behandelt dieses Szenario (zumindest mit tabulatorgetrennten Daten):

  1. Erstellen Sie eine neue Excel-Datei
  2. Strg + A, um alle Zellen auszuwählen
  3. Wählen Sie im Kombinationsfeld Zahlenformat die Option Text aus
  4. Öffnen Sie eine tabulatorgetrennte Datei im Texteditor
  5. Alles auswählen, kopieren und in Excel einfügen
Essiggurken
quelle
1

Fügen Sie einfach 'vor der Nummer im CSV-Dokument hinzu.

MNassar
quelle
Dies hat in Excel 2010 nicht funktioniert ('wird Teil des Zelleninhalts).
sancho.s ReinstateMonicaCellio
1

Das hat mich den ganzen Tag verrückt gemacht (da Sie die Excel-Spaltentypen vor dem Öffnen der CSV-Datei nicht steuern können), und das hat bei mir mit VB.NET und Excel Interop funktioniert:

        'Convert .csv file to .txt file.
        FileName = ConvertToText(FileName)

        Dim ColumnTypes(,) As Integer = New Integer(,) {{1, xlTextFormat}, _
                                                        {2, xlTextFormat}, _
                                                        {3, xlGeneralFormat}, _
                                                        {4, xlGeneralFormat}, _
                                                        {5, xlGeneralFormat}, _
                                                        {6, xlGeneralFormat}}

        'We are using OpenText() in order to specify the column types.
        mxlApp.Workbooks.OpenText(FileName, , , Excel.XlTextParsingType.xlDelimited, , , True, , True, , , , ColumnTypes)
        mxlWorkBook = mxlApp.ActiveWorkbook
        mxlWorkSheet = CType(mxlApp.ActiveSheet, Excel.Worksheet)


Private Function ConvertToText(ByVal FileName As String) As String
    'Convert the .csv file to a .txt file.
    'If the file is a text file, we can specify the column types.
    'Otherwise, the Codes are first converted to numbers, which loses trailing zeros.

    Try
        Dim MyReader As New StreamReader(FileName)
        Dim NewFileName As String = FileName.Replace(".CSV", ".TXT")
        Dim MyWriter As New StreamWriter(NewFileName, False)
        Dim strLine As String

        Do While Not MyReader.EndOfStream
            strLine = MyReader.ReadLine
            MyWriter.WriteLine(strLine)
        Loop

        MyReader.Close()
        MyReader.Dispose()
        MyWriter.Close()
        MyWriter.Dispose()

        Return NewFileName
    Catch ex As Exception
        MsgBox(ex.Message)
        Return ""
    End Try

End Function
Ellen
quelle
0

Beim Öffnen einer CSV erhalten Sie den Textimport-Assistenten. Im letzten Schritt des Assistenten sollten Sie in der Lage sein, die bestimmte Spalte als Text zu importieren, wobei das Präfix '00' beibehalten wird. Danach können Sie die Zelle nach Ihren Wünschen formatieren.

Ich habe es mit Excel 2007 versucht und es schien zu funktionieren.

Kennzeichen
quelle
1
Excel 2003 öffnet den Assistenten nicht.
Sergey Stadnik
0

Excel öffnet den Assistenten für CSV-Dateien nie. Wenn Sie es in .txt umbenennen, wird der Assistent angezeigt, wenn Sie das nächste Mal eine Datei> In Excel öffnen ausführen.

Narayanan
quelle
0

Stellen Sie ein einfaches Anführungszeichen vor das Feld. Excel behandelt es als Text, auch wenn es wie eine Zahl aussieht.

...,`005,...

EDIT: Das ist falsch. Der Apostroph-Trick funktioniert nur, wenn Daten direkt in Excel eingegeben werden. Wenn Sie es in einer CSV-Datei verwenden, wird das Apostroph in dem Feld angezeigt, das Sie nicht möchten.

http://support.microsoft.com/kb/214233

JW.
quelle
4
Dies ist etwas, was die Leute wahrscheinlich versuchen werden. Zu wissen, dass es nicht funktioniert, ist also nützlich und spart Zeit.
AndyM