2012-04-13 250 views
44

通常構建的CSV文件如何?用逗號或分號? 任何建議使用哪一個?含逗號或分號的CSV?

+2

請參見[逗號分隔值](http://en.wikipedia.org/wiki/Comma-separated_values)(Wikipedia)。 – Jesper 2012-04-13 12:42:37

+1

CSV - >逗號分隔值 – ChadNC 2012-04-13 13:02:20

回答

40

在Windows中,它依賴於「區域和語言選項」自定義屏幕,您可以在其中找到列表分隔符。這是Windows應用程序期望的CSV分隔符。

當然,這隻對Windows應用程序有效,例如,如果文件未使用上述分隔符,則Excel不會自動將數據拆分爲列。所有使用Windows區域設置的應用程序都會出現這種情況。

如果您正在爲Windows,需要在其他應用程序導入CSV寫一個程序,你知道的列表分隔您的目標機器設置爲,,然後去了,否則我寧願;,因爲它會導致少的問題帶小數點,數字分組,不出現在很多文本中。

+12

此更改還會影響在Excel中打開CSV文件。 如果您想要使Windows CSV文件更加兼容,請將'sep =;'放在CSV文件的頂部。 – papo 2015-12-30 03:23:31

+4

>「我更喜歡;因爲它會導致更少的小數點問題」。這是錯誤的解決方案。如果您的分隔符是逗號,並且單元格的值也包含逗號,則必須將該值放在雙引號中。例如:111,222,「33,5」,444,「55,98」,666 – Elmue 2016-07-27 20:41:43

+0

Mac Numbers應用程序也是如此。因爲我無法制作Photoshop識別出的csv,所以我拉了我的頭髮。我將區域選項改回美國英語,並且一切都正常工作 – Tibidabo 2017-05-11 08:30:50

2

CSV是一個逗號分隔文件。通常分隔符是逗號,但我看到許多其他字符用作分隔符。他們不是經常使用。

至於建議您使用什麼,我們需要知道您的應用程序。該文件是特定於您的應用程序/程序,還是需要與其他程序一起使用?

+5

我想在歐洲的;流行。主要是因爲我們有像60,00€這樣的逗號。 – oers 2012-04-13 12:43:23

+5

@oers只要你「引用」你的價值觀,這應該不重要。 – adarshr 2012-04-13 12:45:06

+0

嗯,我主要看到用於聯網種子文件的其他分隔符,但歐洲的錢也可以! – 2012-04-13 12:45:36

33

我會說堅持逗號,因爲它被廣泛認可和理解。請務必引用您的價值觀並儘量避免您的報價。

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

用於覆蓋很多csv場景的+1用一個很短的示例 – 2012-09-03 12:53:20

+1

逗號分開是很好的,但是當您獲取其中包含逗號的字段時會出現問題。這裏有一個很好的參考,我發現[在手冊上](http://www.php.net/manual/en/function.fputcsv.php#56827) – Ibu 2013-05-16 18:35:57

+1

錯誤!在我的機器上,如果我使用逗號作爲分隔符編寫CSV文件,並在Excel中打開它,則整行只佔用一列!它必須是一些Windows區域設置! – sergiol 2017-01-04 14:56:17

23

CSV是RFC 4180(2005年)中概述的標準格式,所以不存在缺乏標準的情況。 https://www.ietf.org/rfc/rfc4180.txt

甚至在此之前,在CSV的C一貫主張逗號,而不是分號:(

可惜的是微軟一直忽略這一點,還在堅持,他們把它變成了幾十年前的怪物(是的,我承認,這是創建的RFC之前)。

  • 每行記錄一個,除非換行引用的文字中出現(見下文)。
  • 逗號作爲列分隔符。從來沒有一個分號。
  • PERIOD作爲數字中的小數點。從來沒有逗號。
  • 包含在「雙引號」中的逗號,句點和/或換行符的文本。
  • 只有如果文本用雙引號引起來,文本中的這種引號標誌會加倍。這些例子表示相同的三個字段:

    1 「這個文本包含 」「 引號」 「」,3

    1,這個文本包含 「引號」,3

的標準不包括日期和時間值,我個人試圖堅持ISO 8601格式以避免日/月/年 - 月/日/年的混淆。

+4

如果首先選擇分號,那麼monstruosity將永遠不會出現。逗號不僅用於小數或千位分隔符,而且經常用於文本,與分號不同。分號本來是一個更好的選擇,因爲它更難得... – AFract 2016-06-27 09:04:04

+3

當我說怪物時,我的意思是說微軟使它與語言有關。 Excel會打開CSV文件並將它們視爲電子表格,並且可以以CSV格式保存電子表格,但如果法國或比利時的某個人試圖打開CSV文件,Excel中保存的CSV文件將無法工作,反之亦然。無論什麼標準對我來說都行,只要有一個適用於所有人的標準。 – 2016-06-28 10:21:35

+0

據我所見,「PERIOD作爲數字中的小數點」和「包含句點的文本必須用雙引號括起來」,而不是RFC4180的一部分。但我同意,這是一個很好的建議。 – Fried 2016-08-30 08:22:14

2

若要將逗號更改爲分號作爲CSV的默認Excel分隔符,請轉到區域 - >其他設置 - >數字選項卡 - >列表分隔符 和類型;而不是默認的,

+1

如果使用','作爲小數點分隔符設置區域設置,並且在Excel中打開文件時,文本將出現在ONLY ONE列中。在Excel 2013中,選擇第一列,轉到數據 - >文本到列 - >選擇'分隔符',單擊'下一步',然後在'Delimiters'上只選擇'Comma',你會看到'數據預覽'最後點擊'完成' – sergiol 2017-01-04 15:15:24

1

1>更改文件格式爲.csv(分號分隔)

爲了實現我們需要臨時變更在Excel選項delimiter設定期望的結果:

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

取消選中「使用系統分隔符」設置,並在「小數分隔符」字段中輸入逗號。

現在將文件保存在.CSV格式中,並將以分號分隔格式保存。

1

嗯,只是有一些關於分號的說法。在很多國家,逗號是用於十進制而不是句號的東西。大多數歐盟殖民地,其中一半由世界組成,另一半則遵循英國標準(英國如何如此之大),所以反過來使用包含數字的數據庫的逗號會產生許多令人頭疼的問題,因爲Excel拒絕將其識別爲分隔符。

與我國越南智慧一樣,遵循法國標準,我們的合作伙伴香港使用英國標準,所以逗號使CSV無法使用,我們使用\ t或;而不是用於國際用途,但它仍然不是每個CSV文檔的「標準」。

13

也與此有關,但特別擅長,看this answerthis other one這表明,將在CSV的開頭符合

"sep=," 

要通知Excel來期待

+0

它可以在Excel中使用,但不能被Microsoft Power BI識別。 – qub1n 2017-12-14 12:32:57

0

最好的方式,也分隔將其保存在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) 

FILEEXISTS:

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