2013-06-11 11:04:23 +0000 2013-06-11 11:04:23 +0000
99
99
Advertisement

如何让Excel将逗号解释为CSV文件中的默认分隔符?

Advertisement

我有一些.csv文件。有些是逗号分隔的,有些是制表符分隔的(也许它们应该叫作.tsv….)

当安装了Excel后,csv扩展名会与Excel相关联。但是,如果我用excel打开这些文件,所有的文件都会被倾倒到同一列中,而且逗号不会被解释为分隔符。我不想用Excel来处理它。

有什么方法可以让Excel自动解释分界符,并在打开CSV文件时将其显示为一个正确的表吗?我需要这样做,这样我就可以用Excel作为快速查看器来查看这类文件。

我猜想一定有办法,否则Excel就不会把自己和CSV文件关联起来。

Advertisement
Advertisement

答案 (9)

100
100
100
2013-12-10 14:38:58 +0000

如果你不希望修改文件的格式,而只针对Excel,你可以使用下面的Excel技巧来帮助你。但它是Excel特有的。

85
85
85
2013-06-11 11:07:17 +0000

当打开CSV文件时,Excel会使用一个名为List separator的系统区域设置来决定使用哪种默认的分隔符。

Microsoft Excel会打开.csv文件,但根据系统的区域设置,它可能会期望用分号作为分隔符而不是逗号,因为在某些语言中,逗号是作为小数点分隔符。(来自维基百科)


  • Windows*上,你可以按照Office支持网站中指定的List separator设置来更改Regional and Language Options

更改CSV文本文件中的分隔符

  1. 单击Windows开始菜单。单击 “控制面板"。
  2. 打开 "区域和语言选项 "对话框。
  3. 单击区域选项选项卡。
  4. 单击 "自定义/附加设置"(Win10)。 7.在 "列表分隔符 "框中键入一个新的分隔符。 7.点击两次确定。

:只有当十进制符号没有被指定为逗号时,这个功能才会起作用(与上面的维基百科引文一致)。如果是的话,即使选择了,Excel也不会使用逗号作为列表分隔符。对于许多非美国地区,逗号是默认的十进制符号。

**在Mac OS X*上,这个设置似乎是从十进制分隔符设置中推导出来的(在系统首选项语言和地区窗格中,转到高级)。如果Decimal Separator是一个点,那么默认的CSV分隔符将是一个逗号,但如果Decimal Separator是一个逗号,那么默认的CSV分隔符将是一个分号。它是Quick Look的插件,叫做quicklook-csv,可以处理分隔符检测。

11
Advertisement
11
11
2017-06-02 12:27:39 +0000
Advertisement

你不需要sep=,周围的引号–只要是文件的第一行就可以了,至少在Excel 2016中是这样。

5
5
5
2018-07-21 11:55:56 +0000

接受的答案是正确的,但我是一个视觉的人。以下是在windows 10中如何在windows 10中完成的每一个步骤的截图格式。

1
Advertisement
1
1
2019-09-23 12:03:13 +0000
Advertisement

我有一个.csv文件,分隔符;,区域设置为列表分隔符;。然而,Excel仍然无法解析列。

原来是编码问题。从SQL server Management Studio 2005导出的文件,变成了UCS-2 LE BOM编码。我用记事本+++把编码切换到UTF-8,一切都开始工作了。

1
1
1
2018-06-25 14:46:53 +0000

当区域设置中的分隔符不是逗号而是分号(荷兰语分隔符)时,将CSV文件重命名为TXT文件。右键点击TXT文件,选择 “用 "打开,选择 "Excel"。在Excel中选择第一列,在功能区中选择数据,将文本分隔成列。

OR

安装LibreOffice,用LibreOffice Calc打开CSV文件。

0
Advertisement
0
0
2018-01-22 13:50:36 +0000
Advertisement

对于荷兰语,我遇到了一个问题,Windows 7上的Excel 2008没有遵守RFC4180的规定:

“包含行分隔符(CRLF)、双引号和逗号的字段应该用双引号括起来。”

一个逗号分隔的文件正确地将带逗号(荷兰语小数点分隔符)的字段用双引号括起来。在荷兰语中,小数分隔符是,,而列表分隔符是;,所以Excel无法读取一个同时使用,的文件(即使在控制面板中明确地将列表分隔符改为,也不行)。

输入结果如下:

"06-07-2017 17:03:18"," ********",0:01:04,Uitgaand,"0,1879","0,2273","0,0395",21

由 @user280725 提供的解决方案:

Use Notepad 插入作为第一行:

sep=,

(这意味着用户 @zakinster 的解决方案中的注解不再需要应用。 )


有意思的是:由于csv文件仍在加载中,如果你现在在控制面板中将locale设置为US English并保存文件,那么它将被转换为US English格式(逗号作为列表分隔符,点作为十进制分隔符)。

0
0
0
2017-06-12 17:22:25 +0000

请务必用记事本等简单的编辑器检查CSV文件,以确认它的格式是否正确。

我在解决了一个愚蠢的BUG后,添加了这个答案,因为我用VB创建的CSV文件在Excel中不能用单独的列打开。我发现我写行的方式是用引号包裹了每一行。Excel隐藏了引号,并将整行显示在A列中,使它看起来好像忽略了我的逗号分隔符。

0
Advertisement
0
0
2017-07-31 06:30:51 +0000
Advertisement

最好的方法是将其保存在一个以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:\" & 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
```的文本文件中。
Advertisement

相关问题

6
13
9
10
2
Advertisement