95

How is a CSV file built in general? With commas or semicolons? Any advice on which one to use?

4

10 回答 10

87

在 Windows 中,它取决于“区域和语言选项”自定义屏幕,您可以在其中找到列表分隔符。这是 Windows 应用程序期望作为 CSV 分隔符的字符。

当然,这仅在 Windows 应用程序中有效,例如,如果文件未使用上述分隔符,Excel 不会自动将数据拆分为列。所有使用 Windows 区域设置的应用程序都将具有此行为。

如果您正在编写一个需要在其他应用程序中导入 CSV 的 Windows 程序,并且您知道为您的目标计算机设置的列表分隔符是,,那么就去做吧,否则我更喜欢它,;因为它会减少小数点、数字分组的问题并且不会出现在很多文本中。

于 2012-04-13T12:49:07.573 回答
63

CSV 是一种标准格式,在 RFC 4180(2005 年)中进行了概述,因此不乏标准。 https://www.ietf.org/rfc/rfc4180.txt

甚至在此之前,CSV 中的 C 一直代表逗号,而不是分号:(

遗憾的是,微软一直忽视这一点,并且仍然坚持他们在几十年前把它变成的怪物(是的,我承认,那是在创建 RFC 之前)。

  • 每行一条记录,除非在引用的文本中出现换行符(见下文)。
  • 逗号作为列分隔符。从来没有分号。
  • PERIOD 作为数字中的小数点。从来没有逗号。
  • 包含用“双引号”括起来的逗号、句点和/或换行符的文本。
  • 当文本用双引号括起来时,文本中的此类引号才会通过双引号进行转义。这些示例代表相同的三个字段:

    1,"此文本包含""引号""",3

    1、本文包含“引号”,3

该标准不包括日期和时间值,我个人尝试坚持 ISO 8601 格式以避免日/月/年 - 月/日/年混淆。

于 2015-06-18T14:45:35.847 回答
56

I'd say stick to comma as it's widely recognized and understood. Be sure to quote your values and escape your quotes though.

ID,NAME,AGE
"23434","Norris, Chuck","24"
"34343","Bond, James ""master""","57"
于 2012-04-13T12:41:44.827 回答
44

也相关,但特别是excel,看看这个答案另一个建议,在CSV的开头插入一行

"sep=,"

通知 excel 期望使用哪个分隔符

于 2016-11-21T12:23:45.950 回答
11

1.> 将文件格式更改为 .CSV(分号分隔)

为了达到预期的效果,我们需要临时更改选项delimiter中的设置Excel

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

取消选中“使用系统分隔符”设置并在“小数分隔符”字段中添加逗号。

现在以.CSV格式保存文件,它将以分号分隔的格式保存。

于 2016-08-09T13:47:23.627 回答
6

最初它是一个逗号,但由于逗号经常用作小数点,所以它不是很好的分隔符,因此其他人喜欢分号,主要取决于国家/地区

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

于 2012-04-13T12:44:10.273 回答
4

CSV is a Comma Seperated File. Generally the delimiter is a comma, but I have seen many other characters used as delimiters. They are just not as frequently used.

As for advising you on what to use, we need to know your application. Is the file specific to your application/program, or does this need to work with other programs?

于 2012-04-13T12:40:28.660 回答
3

要将逗号更改为分号作为 CSV 的默认 Excel 分隔符 - 转到区域 -> 其他设置 -> 数字选项卡 -> 列表分隔符并键入;而不是默认值,

于 2016-02-15T07:50:29.947 回答
2

好吧,只是想谈谈分号。在许多国家/地区,逗号用于小数而不是句点。大多数欧盟殖民地,占世界的一半,另一半遵循英国标准(英国怎么这么大 O_O)所以反过来使用逗号作为包含数字的数据库会造成很多麻烦,因为 Excel 拒绝将其识别为分隔符.

就像我的国家越南一样,遵循法国的标准,我们的合作伙伴香港使用英国标准,所以逗号使 CSV 无法使用,我们使用 \t 或 ; 而是用于国际使用,但根据 CSV 文档,它仍然不是“标准”。

于 2016-11-16T08:17:46.093 回答
-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
于 2017-07-31T06:28:00.683 回答