一般情况下如何构建CSV文件?用逗号或分号? 有关哪一个使用的建议?
答案 0 :(得分:61)
在Windows中,它依赖于“区域和语言选项”自定义屏幕,您可以在其中找到列表分隔符。这是char应用程序期望的CSV分隔符。
当然这仅对Windows应用程序有效,例如,如果文件未使用上述分隔符,Excel将不会自动将数据拆分为列。所有使用Windows区域设置的应用程序都会出现这种情况。
如果您正在编写一个Windows程序,需要在其他应用程序中导入CSV,并且您知道为目标计算机设置的列表分隔符为,
,那么请选择它,否则我更喜欢{{1因为它可以减少小数点,数字分组的问题,并且不会出现在很多文本中。
答案 1 :(得分:43)
我会坚持使用逗号,因为它被广泛认可和理解。请务必引用您的值并转义您的报价。
ID,NAME,AGE
"23434","Norris, Chuck","24"
"34343","Bond, James ""master""","57"
答案 2 :(得分:34)
CSV是RFC 4180(2005年)中概述的标准格式,因此不缺乏标准。 https://www.ietf.org/rfc/rfc4180.txt
甚至在此之前,CSV中的C始终代表逗号,而不是代码为halfColon :(
很可惜微软一直在忽视这一点,并且仍然坚持他们几十年前把它变成怪物(是的,我承认,那是在创建RFC之前)。仅如果文本用双引号括起来,则文本中的引号会被加倍转义。这些示例代表相同的三个字段:
1,"此文字包含""引号""",3
1,此文本包含"引号",3
该标准不包括日期和时间值,我个人尝试坚持ISO 8601格式,以避免日/月/年 - 月/日/年混淆。
答案 3 :(得分:29)
答案 4 :(得分:5)
最初它是一个逗号,但由于逗号通常用作小数点,它不会是如此好的分隔符,因此其他像分号,主要是依赖于国家
http://en.wikipedia.org/wiki/Comma-separated_values#Lack_of_a_standard
答案 5 :(得分:5)
<强> 1.&GT;将文件格式更改为.CSV(以分号分隔)
要获得所需的结果,我们需要临时更改delimiter
选项中的Excel
设置:
Move to File -> Options -> Advanced -> Editing Section
取消选中“使用系统分隔符”设置,并在“十进制分隔符”字段中输入逗号。
现在以.CSV
格式保存文件,它将以分号分隔格式保存。
答案 6 :(得分:3)
CSV是逗号分隔文件。通常,分隔符是逗号,但我看到许多其他字符用作分隔符。它们的使用频率不高。
至于建议您使用什么,我们需要知道您的应用程序。该文件是否特定于您的应用程序/程序,还是需要与其他程序一起使用?
答案 7 :(得分:2)
要将逗号更改为分号作为CSV的默认Excel分隔符,请转到“区域” - &gt;其他设置 - &gt;数字标签 - &gt;列表分隔符 和类型;而不是默认值,
答案 8 :(得分:1)
刚才有一些关于分号的说法。在许多国家,逗号是用于小数而不是期间的用途。大多数欧盟殖民地,包括世界的一半,另一半遵循英国标准(地狱英国如此大O_O)所以反过来使用逗号包括数字的数据库创造了很多头痛,因为Excel拒绝将其识别为分隔符
在我的国家,越南,按照法国的标准,我们的合作伙伴HongKong使用英国标准,因此逗号使CSV无法使用,我们使用\ t或;相反,国际使用,但它仍然不是CSV文件的“标准”。
答案 9 :(得分:-1)
最好的方法是将其保存在带有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