CSV mit Komma oder Semikolon?

80

Wie wird eine CSV-Datei im Allgemeinen erstellt? Mit Kommas oder Semikolons? Irgendwelche Ratschläge, welche man verwenden soll?

Mitgliedssound
quelle
5
Siehe Kommagetrennte Werte (Wikipedia).
Jesper
4
CSV -> durch Kommas getrennte Werte
ChadNC
@ChadNC Daran habe ich auch gedacht, als ich das Trennzeichen ausgewählt habe, das mein Code verwenden würde. Die einfachste Lösung war die Verwendung ;, die sowohl in Ubuntu als auch in Windows automatisch erkannt wird, ohne dass ich bestimmte Einstellungen vorschreiben muss.
Gsamaras

Antworten:

77

In Windows hängt es vom Anpassungsbildschirm "Regional- und Sprachoptionen" ab, auf dem Sie ein Listentrennzeichen finden. Dies ist das Zeichen, das Windows-Anwendungen als CSV-Trennzeichen erwarten.

Dies wirkt sich natürlich nur in Windows-Anwendungen aus. Beispielsweise teilt Excel Daten nicht automatisch in Spalten auf, wenn die Datei nicht das oben genannte Trennzeichen verwendet. Alle Anwendungen, die regionale Windows-Einstellungen verwenden, weisen dieses Verhalten auf.

Wenn Sie ein Programm für Windows schreiben, für das die CSV in andere Anwendungen importiert werden muss, und Sie wissen, dass das für Ihre Zielcomputer festgelegte Listentrennzeichen lautet ,, wählen Sie es aus. Andernfalls bevorzuge ich, ;da es weniger Probleme mit Dezimalstellen und der Gruppierung von Ziffern verursacht und erscheint nicht in viel Text.

Geschwister
quelle
35
Diese Änderung wirkt sich auch auf das Öffnen von CSV-Dateien in Excel aus. Wenn Sie die Kompatibilität mit Windows-CSV-Dateien verbessern möchten, legen Sie sie sep=;über die CSV-Datei.
Papo
11
> "Ich bevorzuge; da es weniger Probleme mit Dezimalstellen verursacht". Dies ist die falsche Lösung. Wenn Ihr Trennzeichen ein Komma ist und der Wert einer Zelle auch ein Komma enthält, müssen Sie den Wert in doppelte Anführungszeichen setzen. Zum Beispiel: 111,222, "33,5", 444, "55,98", 666
Elmue
1
Dies gilt auch für die Mac Numbers App. Ich habe mir die Haare ausgezogen, weil ich keine von Photoshop erkannte CSV erstellen konnte. Ich habe die Option für die Region wieder auf US-Englisch umgestellt und alles hat wieder gut funktioniert
Tibidabo
20
Diese regionale Sache ist die dümmste, die jemals gemacht werden konnte. Wie kann das Format der CSV in den Regionen unterschiedlich sein? Dies bedeutet, dass meine Kollegen die CSV nicht für Leute mit einem PC in einer anderen Region öffnen oder speichern können. Oucch
Miguel
Wenn Sie in Coder C++unter Windows programmieren , können Sie die folgende API verwenden, um systemweit oder Benutzerbegrenzer GetLocaleInfo(lcid, LOCALE_SLIST, buff, _countof(buff));
abzurufen
51

Ich würde sagen, bleib beim Komma, da es weithin anerkannt und verstanden wird. Stellen Sie sicher, dass Sie Ihre Werte zitieren und sich Ihren Zitaten entziehen.

ID,NAME,AGE
"23434","Norris, Chuck","24"
"34343","Bond, James ""master""","57"
adarshr
quelle
5
+1 für die Abdeckung vieler CSV-Szenarien mit einem sehr kurzen Beispiel
Niels Brinch
1
Das Trennen von Kommas allein ist gut, aber Sie erhalten Probleme, wenn Sie Felder mit Kommas erhalten. Hier ist eine gute Referenz, die ich im Handbuch gefunden habe
Ibu
4
FALSCH! Wenn ich auf meinem Computer eine CSV-Datei mit Kommas als Trennzeichen schreibe und in Excel öffne, belegt die gesamte Zeile nur eine Spalte! Es muss eine regionale Windows-Einstellung sein!
Sergiol
2
@sergiol Ich bin nicht sicher, wie das ungültig macht, was sie gesagt haben.
AMC
51

CSV ist ein Standardformat, das in RFC 4180 (2005) beschrieben ist, sodass es nicht an einem Standard mangelt. https://www.ietf.org/rfc/rfc4180.txt

Und schon vorher stand das C in CSV immer für Komma, nicht für semiColon :(

Es ist schade, dass Microsoft dies immer wieder ignoriert und sich immer noch an die Monstrosität hält, die sie vor Jahrzehnten daraus gemacht haben (ja, ich gebe zu, das war, bevor der RFC erstellt wurde).

  • Ein Datensatz pro Zeile, es sei denn, im zitierten Text steht eine neue Zeile (siehe unten).
  • COMMA als Spaltentrenner. Niemals ein Semikolon.
  • ZEITRAUM als Dezimalpunkt in Zahlen. Niemals ein Komma.
  • Text mit Kommas, Punkten und / oder Zeilenumbrüchen in doppelten Anführungszeichen.
  • Nur wenn Text in doppelte Anführungszeichen eingeschlossen ist, werden solche Anführungszeichen im Text durch Verdoppeln umgangen. Diese Beispiele repräsentieren dieselben drei Felder:

    1, "dieser Text enthält" "Anführungszeichen" ", 3

    1, dieser Text enthält "Anführungszeichen", 3

Die Norm deckt keine Datums- und Zeitwerte ab. Ich persönlich versuche, mich an das ISO 8601-Format zu halten, um Verwechslungen zwischen Tag / Monat / Jahr - Monat / Tag / Jahr zu vermeiden.

Luc VdV
quelle
16
Die Monstruosität wäre niemals aufgetreten, wenn das Semikolon an erster Stelle gewählt worden wäre. Das Komma wird nicht nur für Dezimalstellen oder Tausendertrennzeichen verwendet, sondern im Gegensatz zum Semikolon auch sehr oft im Text. Semikolon wäre eine bessere Wahl gewesen, weil es viel seltener ist ...
AFract
14
Als ich Monstrosität sagte, meinte ich, dass Microsoft es sprachabhängig machte. Excel öffnet CSV-Dateien und behandelt sie als Tabellenkalkulationen und kann Tabellenkalkulationen im CSV-Format speichern. Eine von Excel in den USA (z. B.) gespeicherte CSV-Datei funktioniert jedoch nicht, wenn jemand in Frankreich oder Belgien versucht, sie zu öffnen, und umgekehrt. Welcher Standard auch immer für mich in Ordnung ist, solange es einen Standard gibt, der für alle funktioniert.
Luc VdV
4
"CSV ist ein Standardformat, das in RFC 4180 (2005) beschrieben ist. Es fehlt also nicht an einem Standard." Leider ist RFC 4180 eine Anfrage nach Kommentaren, kein Standard. Ganz oben steht: "Gibt keinen Internetstandard an." Später heißt es, dass RFC 4180 "das Format dokumentiert, dem die meisten Implementierungen zu folgen scheinen". Es scheint, dass dies von einer kleinen privaten Firma geschaffen wurde, die keinem Standardkörper zugeordnet ist. Es ist ein ausgezeichneter Ausgangspunkt, aber es gibt leider viele CSV-Dateien in freier Wildbahn, die diesem "Standard" nicht folgen.
Jim Rea
9
ALLE Internetstandards werden als RFC bezeichnet.
Luc VdV
2
Aber wenn sie Standard sind, geben sie nicht an, dass sie nicht normativ sein sollen. Stattdessen haben sie eine Reihe von normativen Abschnitten, was bei RFC 4180 nicht der Fall ist.
Frédéric
42

Schauen Sie sich auch diese Antwort und die andere , die dies vorschlägt, an, indem Sie eine Zeile am Anfang der CSV mit einfügen

"sep=,"

Um Excel zu informieren, welches Trennzeichen zu erwarten ist

Rafareino
quelle
3
Es funktioniert zwar mit Excel, wird jedoch von Microsoft Power BI nicht erkannt.
Tomas Kubes
8

1.> Ändern Sie das Dateiformat in .CSV (durch Semikolon getrennt).

Um das gewünschte Ergebnis zu erzielen, müssen wir die delimiterEinstellung in den ExcelOptionen vorübergehend ändern :

Move to File -> Options -> Advanced -> Editing Section

Deaktivieren Sie die Einstellung "Systemtrennzeichen verwenden" und setzen Sie ein Komma in das Feld "Dezimaltrennzeichen".

Speichern Sie nun die Datei im .CSVFormat und sie wird im durch Semikolons getrennten Format gespeichert.

Hugo Bourret-Desmarais
quelle
6

Ursprünglich sollte es ein Komma sein, aber da das Komma oft als Dezimalpunkt verwendet wird, wäre es kein so gutes Trennzeichen, daher andere wie das Semikolon, meistens länderabhängig

http://en.wikipedia.org/wiki/Comma-separated_values#Lack_of_a_standard


quelle
Dieser Abschnitt des Wikipedia-Artikels ist verschwunden. Möglicherweise möchten Sie erneut auf en.wikipedia.org/wiki/Comma-separated_values#Basic_rules verlinken . Dies hat eine Passage zu Gebietsschemas:> " Benachbarte Felder müssen durch ein einziges Komma getrennt werden. Die" CSV "-Formate variieren jedoch stark in Diese Wahl des Trennzeichens. Insbesondere in Gebietsschemas, in denen das Komma als Dezimaltrennzeichen verwendet wird, werden stattdessen Semikolon, TAB oder andere Zeichen verwendet. "
Jules Kerssemakers
4

CSV ist eine durch Kommas getrennte Datei. Im Allgemeinen ist das Trennzeichen ein Komma, aber ich habe viele andere Zeichen gesehen, die als Trennzeichen verwendet werden. Sie werden einfach nicht so häufig verwendet.

Um Sie über die Verwendung beraten zu können, müssen wir Ihre Anwendung kennen. Ist die Datei spezifisch für Ihre Anwendung / Ihr Programm oder muss dies mit anderen Programmen funktionieren?

Youssef G.
quelle
6
Ich denke in Europa die; ist weit verbreitet. Meistens, weil wir Kommas in Zahlen wie 60,00 € haben.
Oers
5
@oers Es sollte keine Rolle spielen, solange Sie "quote"Ihre Werte.
Adarshr
Nun, ich habe meistens andere Begrenzer gesehen, die beim Vernetzen von Seedfiles verwendet wurden, aber europäisches Geld funktioniert auch!
Youssef G.
4

Um das Komma in Semikolon als Standard-Excel-Trennzeichen für CSV zu ändern, gehen Sie zu Region -> Zusätzliche Einstellungen -> Registerkarte Zahlen -> Listentrennzeichen und Typ. anstelle der Standardeinstellung

Michael
quelle
1
Wenn Ihre regionalen Einstellungen ,als Dezimaltrennzeichen festgelegt sind und Sie eine Datei mit Spalten exportieren, die ,beim Öffnen durch Excel getrennt sind, wird Text in NUR EINER Spalte angezeigt. Wählen DelimitedSie in Excel 2013 die erste Spalte aus, gehen Sie zu DATA -> Text To Columns -> Choose , klicken Sie Nextund wählen Sie dann nur Commaauf. DelimitersSie sehen sofort Änderungen in der Data previewund klicken Finish
Sie
2

Nun, nur um etwas über Semikolon zu sagen. In vielen Ländern wird Komma als Dezimalzahl und nicht als Punkt verwendet. Meistens folgen EU-Kolonien, die aus der Hälfte der Welt bestehen, eine andere Hälfte dem britischen Standard (wie zum Teufel Großbritannien so groß ist O_O), sodass die Verwendung von Komma für Datenbanken mit Zahlen einen Großteil der Kopfschmerzen verursacht, da Excel sich weigert, sie als Trennzeichen zu erkennen .

Wie weise in meinem Land, Vietnam, folgen Sie dem französischen Standard, unser Partner Hongkong verwendet den britischen Standard, so dass Kommas CSV unbrauchbar machen, und wir verwenden \ t oder; stattdessen für den internationalen Gebrauch, aber immer noch nicht "Standard" gemäß dem Dokument von CSV.

Tran Vu Dang Khoa
quelle
-3

Am besten speichern Sie es in einer Textdatei mit der Erweiterung csv:

Sub ExportToCSV()
Dim i, j As Integer
Dim Name  As String

Dim pathfile As String

Dim fs As Object
    Dim stream As Object

    Set fs = CreateObject("Scripting.FileSystemObject")
On Error GoTo fileexists

i = 15
Name = Format(Now(), "ddmmyyHHmmss")
pathfile = "D:\1\" & Name & ".csv"

Set stream = fs.CreateTextFile(pathfile, False, True)

Datei existiert:

If Err.Number = 58 Then
    MsgBox "File already Exists"
    'Your code here
    Return
End If
On Error GoTo 0

j = 1
Do Until IsEmpty(ThisWorkbook.ActiveSheet.Cells(i, 1).Value)

    stream.WriteLine (ThisWorkbook.Worksheets(1).Cells(i, 1).Value & ";" & Replace(ThisWorkbook.Worksheets(1).Cells(i, 6).Value, ".", ","))

    j = j + 1
    i = i + 1
Loop


stream.Close

End Sub
AzizD
quelle