カンマまたはセミコロン付きのCSV?


80

CSVファイルは一般的にどのように作成されますか?カンマまたはセミコロンを使用しますか?どちらを使用するかについてのアドバイスはありますか?


5
カンマ区切り値(ウィキペディア)を参照してください。
ジェスパー

4
CSV->カンマ区切り値
ChadNC 2012

@ChadNCコードで使用する区切り文字を選択するときにも、そのことを考えました。最も簡単な解決策は;、UbuntuとWindowsの両方で自動的に認識されるを使用することでした。特定の設定を指定する必要はありません。
gsamaras 2018

回答:


77

Windowsでは、リスト区切り文字が表示される[地域と言語のオプション]カスタマイズ画面に依存しています。これは、WindowsアプリケーションがCSV区切り文字として期待する文字です。

もちろん、これはWindowsアプリケーションでのみ効果があります。たとえば、ファイルが上記の区切り文字を使用していない場合、Excelはデータを列に自動的に分割しません。Windowsの地域設定を使用するすべてのアプリケーションで、この動作が行われます。

他のアプリケーションでCSVをインポートする必要があるWindows用のプログラムを作成していて、ターゲットマシンに設定されているリストセパレータがであることがわかっている場合は,、それを選択します。それ以外の場合は;、小数点、桁のグループ化の問題が少ないため、私は好みます。多くのテキストには表示されません。


35
この変更は、ExcelでのCSVファイルのオープンにも影響します。WindowsのCSVファイルとの互換性を高めたい場合sep=;は、CSVファイルの上に配置します。
papo 2015

11
>「私は好む;小数点の問題が少ないので」。これは間違った解決策です。区切り文字がコンマで、セルの値にもコンマが含まれている場合は、値を二重引用符で囲む必要があります。例:111,222、 "33,5"、444、 "55,98"、666
Elmue 2016

1
MacNumbersアプリにも当てはまります。Photoshopが認識できるcsvを作成できなかったため、髪を抜いていた。地域オプションをアメリカ英語に戻しましたが、すべて正常に機能しました
Tibidabo 2017年

21
その地域的なものは、これまでに作られた中で最も愚かなものです。csvの形式は地域によってどのように異なるのでしょうか。これは、同僚が別の地域にPCを持っている人のためにcsvを開いたり保存したりできないことを意味します。oucch–
Miguel

あなたのしている中でプログラミングする場合CまたはC++:あなたは、システム全体取得するには、次のAPIを使用することができますWindowsで、またはユーザーの区切りGetLocaleInfo(lcid, LOCALE_SLIST, buff, _countof(buff));
ahmd0

52

広く認識され理解されているので、コンマに固執すると思います。ただし、必ず値を引用し、引用をエスケープしてください。

ID,NAME,AGE
"23434","Norris, Chuck","24"
"34343","Bond, James ""master""","57"

5
非常に短い例でCSVシナリオの多くをカバーするための1
ニールスBrinch

1
カンマを単独で分離するのは良いことですが、カンマを含むフィールドを取得すると問題が発生します。これが私がマニュアルで
Ibu 2013年

4
違う!私のマシンでは、カンマを区切り文字として使用してCSVファイルを記述し、それをExcelで開くと、行全体が1列だけを占めるようになります。これは、Windowsの地域設定である必要があります。
sergiol 2017年

2
@sergiolそれが彼らの言ったことをどのように無効にするのかわかりません。
AMC

51

CSVは、RFC 4180(2005年)で概説されている標準形式であるため、標準に欠けることはありません。 https://www.ietf.org/rfc/rfc4180.txt

そしてその前でさえ、CSVのCは常にセミコロンではなくコンマを表してきました:(

マイクロソフトがそれを無視し続け、数十年前にそれを変えた怪物にまだ固執しているのは残念です(そうです、それはRFCが作成される前でした)。

  • 引用されたテキスト内に改行がない限り、1行に1つのレコード(以下を参照)。
  • 列区切り文字としてのCOMMA。セミコロンはありません。
  • 数値の小数点としてのPERIOD。カンマは使用しないでください。
  • 「二重引用符」で囲まれたコンマ、ピリオド、改行を含むテキスト。
  • テキストが二重引用符で囲まれている場合にのみ、テキスト内のそのような引用符は二重引用符でエスケープされます。これらの例は、同じ3つのフィールドを表しています。

    1、 "このテキストには" "引用符" ""、3が含まれています

    1、このテキストには「引用符」が含まれています、3

この規格は日付と時刻の値をカバーしていません。個人的には、日/月/年-月/日/年の混乱を避けるためにISO8601形式に固執しようとしています。


16
セミコロンが最初に選ばれたならば、怪物は決して現れなかっただろう。カンマは、小数や千単位の区切り文字だけでなく、セミコロンとは異なり、テキストでもよく使用されます。セミコロンははるかにまれなので、より良い選択だったでしょう...
AFract 2016年

14
私が怪物と言ったとき、私はマイクロソフトがそれを言語に依存させたことを意味しました。ExcelはCSVファイルを開いてスプレッドシートとして扱い、スプレッドシートをCSV形式で保存できますが、たとえば米国でExcelによって保存されたCSVファイルは、フランスやベルギーの誰かが開こうとすると機能しません。その逆も同様です。誰にでも使える基準があれば、どんな基準でも大丈夫です。
Luc VdV 2016年

4
「CSVはRFC4180(2005年)で概説されている標準形式であるため、標準が不足しているわけではありません。」残念ながら、RFC 4180はコメントの要求であり、標準ではありません。一番上に、「いかなる種類のインターネット標準も指定していません」と書かれています。後で、RFC4180は「ほとんどの実装が従うように見えるフォーマットを文書化する」と述べていますこれは小さな民間企業によって作成されたものであり、標準の組織とは関係がないようです。これは優れた出発点ですが、残念ながら、この「標準」に準拠していないCSVファイルが世の中にはたくさんあります。
ジム・レア

9
すべてのインターネット標準はRFCと呼ばれます。
LucVdV19年

2
しかし、それらが標準である場合、それらは規範的であることを意図していないとは述べていません。代わりに、RFC 4180の場合とは異なり、内部にいくつかの規範的なセクションがあります。
Frédéric19年

42

また、関連性がありますが、特に優れているので、この回答と、CSVの先頭に次の行を挿入して提案する他の回答を見てください。

"sep=,"

どのセパレーターを期待するかをExcelに通知する


3
Excelで動作しますが、Microsoft PowerBIでは認識されません。
Tomas Kubes 2017

9

1.>ファイル形式を.CSV(セミコロン区切り)に変更します

目的の結果を得るにはdelimiterExcelオプションの設定を一時的に変更する必要があります。

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

「システム区切り文字を使用する」設定のチェックを外し、「小数点記号」フィールドにコンマを入力します。

ここで、ファイルを.CSV形式で保存すると、セミコロンで区切られた形式で保存されます。


6

当初はコンマでしたが、コンマは小数点として使用されることが多いため、このような適切な区切り文字ではありません。したがって、セミコロンのような他の、ほとんどの国に依存します。

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


ウィキペディアの記事のそのセクションは消えました。en.wikipedia.org/wiki/Comma-separated_values#Basic_rulesに再リンクすることをお勧めします 。これには、ロケールに関する一節があります
JulesKerssemakers19年

4

CSVはコンマ区切りファイルです。通常、区切り文字はコンマですが、区切り文字として使用される他の多くの文字を見てきました。それらはそれほど頻繁には使用されません。

何を使用するかについてアドバイスすることに関しては、私たちはあなたのアプリケーションを知る必要があります。ファイルはアプリケーション/プログラムに固有ですか、それとも他のプログラムで機能する必要がありますか?


6
ヨーロッパでは; 流行しています。主な理由は、60,00€のような数字のコンマがあるためです。
oers 2012

5
@oers"quote"あなたの価値観が長ければ問題ではありません。
adarshr 2012

さて、私は主にネットワークシードファイルで使用される他の区切り文字を見ましたが、ヨーロッパのお金も機能します!
Youssef G.

4

CSVのデフォルトのExcel区切り文字としてカンマをセミコロンに変更するには、[地域]-> [追加設定]-> [数値]タブ-> [リスト区切り文字]に移動して、;と入力します。デフォルトの代わりに、


1
地域の設定が,小数点記号として設定されていて、,開いたときに列が区切られたファイルをエクスポートした場合、Excelでテキストは1つの列にのみ表示されます。Excel 2013で、最初の列を選択し、[データ]-> [列へのテキストDelimited] -> [選択]に移動し、をクリックしてNextから選択CommaするDelimitersと、すぐに変更が表示され、Data preview最後に[Finish
sergiol

2

セミコロンについて少し言っておくだけです。多くの国では、コンマはピリオドではなく小数に使用されます。世界の半分で構成されるほとんどのEUコロニー、残りの半分は英国の標準(英国のO_Oが非常に大きい)に準拠しているため、Excelが区切り文字として認識しないため、数値を含むデータベースにコンマを使用すると頭痛の種になります。 。

私の国のベトナムと同じように、フランスの標準に従います。パートナーの香港は英国の標準を使用しているため、コンマを使用するとCSVが使用できなくなり、\ tまたは;を使用します。代わりに国際的に使用されますが、CSVのドキュメントによると「標準」ではありません。


-3

最良の方法は、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)

ファイルが存在しています:

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.