webentwicklung-frage-antwort-db.com.de

Excel CSV - Zahlenformat

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, so dass der Benutzer einfach auf die CSV-Datei doppelklicken kann, um sie zu öffnen.

Ich benutze Excel 2003.

83
Sergey Stadnik

Es gibt keine einfache Möglichkeit, die Formatierung von Excel beim Öffnen einer CSV-Datei zu steuern. 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 ..., 5 angezeigt , ...

Excel hat die Daten als Formel beibehalten. Durch Kopieren der Spalte und Einfügen von Sonderwerten 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 dreistellig sind. Öffnen Sie dann die Daten in Excel und formatieren Sie die Spalte mit den Daten in diesem benutzerdefinierten Format

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

Ändern Sie die Dateierweiterung und verwenden Sie den Dateiimport-Assistenten, um die Formate zu steuern. Dateien mit der Erweiterung .dif werden beim 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 'File Import Wizard' wird gestartet.
  • Stellen Sie den 'Dateityp' auf 'Getrennt' und klicken Sie auf die Schaltfläche 'Weiter'.
  • Kreuzen Sie unter Trennzeichen 'Komma' an und klicken Sie auf die Schaltfläche 'Weiter'.
  • Klicken Sie auf jede Spalte Ihrer Daten, die angezeigt wird, 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.
121
Robert Mearns

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

Es gibt viel mehr Kontrolle über die Formatierung, und Excel versucht nicht, 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.

27
Mark Ransom

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 zum direkten Formatieren des Imports wünschen

  1. Öffnen Sie eine leere (neue) Datei (Datei -> Neu aus Arbeitsmappe)
  2. Öffnen Sie den Import Wizard (Daten -> Aus Text)
  3. Wählen Sie Ihre CSV-Datei und Importieren
  4. Wählen Sie im Dialogfeld "Getrennt" und klicken Sie auf "Weiter".
  5. Wählen Sie Ihre Trennzeichen (deaktivieren Sie alles außer 'Komma'), wählen Sie Ihre Textqualifikatoren (wahrscheinlich {Keine}) und klicken Sie auf Weiter
  6. Wählen Sie im Feld Datenvorscha die Spalte aus, in der Sie Text anzeigen möchten. Es sollte hervorheben.
  7. Wählen Sie im Feld Spaltendatenformat die Option 'Text' aus.
  8. Klicken Sie auf Fertig.
14
user288926

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

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

Versucht auf Excel 2010. Hoffe, dies kann Menschen helfen, die noch eine ganz richtige Lösung für dieses Problem suchen.

2
Kloe2378231

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 Steuerungsebene wie SYLK, die XML-Syntax ist jedoch intuitiver.

2
Sergey Stadnik

Sie können Ihren Bereich einfach als Text formatieren.

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

2
Ólafur Waage

Ich hatte dieses Problem beim Exportieren von CSV-Daten aus C # -Code und löste dieses Problem, indem ich den führenden Nulldaten das Tabulatorzeichen\t voranstellte, sodass die Daten in Excel als Text und nicht als Zahlen interpretiert wurden. nicht gesehen werden).

Ich mochte den Ansatz = "001", aber dadurch konnten exportierte CSV-Daten nicht erneut in meine C # -Anwendung importiert werden, ohne die gesamte Formatierung aus der CSV-Importdatei zu entfernen (stattdessen schneide ich nur die Importdaten ab). .

2

Die Textimportmethode Wizard funktioniert NICHT, wenn die zu importierende CSV-Datei Zeilenumbrüche in einer Zelle enthält. Diese Methode behandelt dieses Szenario (zumindest bei durch Tabulatoren getrennten Daten):

  1. Neue Excel-Datei erstellen
  2. Strg + A, um alle Zellen auszuwählen
  3. Wählen Sie in dem Kombinationsfeld Zahlenformat Text aus
  4. Tabulatorgetrennte Datei im Texteditor öffnen
  5. Alles auswählen, kopieren und in Excel einfügen
1
Pickles

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

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

Auf diese Weise wurde die automatische Datumsformatierung in Excel 2007 ohnehin verhindert.

1
plntxt

Ich glaube, wenn Sie die Datei importieren, können Sie den Spaltentyp auswählen. Machen Sie es Text anstelle von Nummer. Ich habe im Moment keine Kopie vor mir, die ich überprüfen könnte.

1
Harley Holcombe

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

ich habe die gleiche Frage gestellt und sie dann mit Code beantwortet.

im Grunde genommen trifft der Oledb-Treiber beim Laden der CSV-Datei Annahmen. Sie können ihm sagen, welche Annahmen zu treffen sind.

Mein Code zwingt jedoch alle Datentypen zur Zeichenfolge ... das Schema kann sehr einfach geändert werden. für meine zwecke habe ich ein xslt verwendet, um ti so zu machen, wie ich es wollte - aber ich analysiere eine Vielzahl von Dateien.

1
John Nicholas

Das hat mich den ganzen Tag verrückt gemacht (da Sie die Excel-Spaltentypen nicht kontrollieren können, bevor Sie die CSV-Datei öffnen), 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
1
Ellen

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

0
Narayanan

Setzen 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 benötigen.

http://support.Microsoft.com/kb/2142

0
JW.

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 und dabei das Präfix '00' beizubehalten. Danach können Sie die Zelle beliebig formatieren.

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

0
Mark

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

0
MNassar