如何在Excel 2013中正确显示.csv文件?

198

看起来 Excel 2013 无法正确读取 CSV 文件(Excel 2010 可以)。每次我打开 .csv 文件时,所有数据都显示在第一列中。

我知道我可以去 数据转换,然后选择 逗号,但这个设置没有保存,我已经厌倦了每次打开这种文件时都要做这个设置。

我该如何彻底设置 Excel 2013,使其漂亮地显示 CSV 文件(以逗号分隔)?


1
当您打开文件时,是否出现任何消息? - Andre Silva
没有。没有出现任何消息。 - David
我的经验是,如果文件有标题行,Excel 2013 将自动通过导入向导进行操作。如果没有标题行,则它会将所有内容显示为每行一个单独的列。 - StarPilot
7个回答

417

使用像Notepad++这样的文本编辑器打开CSV文件,在第一行添加以下文本:

sep=,

现在再次用Excel打开它。

这将把分隔符设置为逗号,或者您可以根据需要更改它。


3
最佳解决方案,但不是我预期的那种。这个设置并不是来自 Excel 本身,这意味着我必须在所有我的 CSV 文件中写入这行内容。 - David
31
这种不标准的方法并不常见,没有任何编写 CSV 的应用程序会添加这一行,只有 Excel (据我所知)会接受它。这最多也只是一个不良解决方案。更别提这在 Excel 2007 上不能正常工作(这是我们公司使用的最好版本)。 - jmarkmurphy
22
我们谈论的不是标准,而是微软Excel。Excel会根据语言提供不同的配置和热键,这使得导入CSV文件成为了一个难题。这只是一个解决方法,我相信它能帮助很多人,尤其是高级用户,但并不是最好的答案。 - Guilherme Viebig
10
需要一种解决方案,不涉及向文件添加行,因为这会破坏需要使用该文件的其他内容。此外,已尝试区域设置解决方案,但设置已经按照指示进行,Excel 仍将所有内容放在第一列中。 - Elliot
2
有人知道这个在哪里有记录吗?在Excel的帮助中找不到任何信息。此外,还有其他类似的第一行技巧吗? - wotuzu17
显示剩余9条评论

96

Excel 2013的操作步骤:

  1. 打开一个空白工作簿。
  2. 进入数据选项卡。
  3. 点击来自文本按钮,它在常规外部数据区域中。
  4. 选择你的CSV文件。
  5. 按照文本导入向导进行操作。(在第二步中,选择你文本的分隔符)

http://blogmines.com/blog/how-to-import-text-file-in-excel-2013/


40

问题出在区域选项上。对于欧洲国家,win 7 上的十进制分隔符为逗号。您需要打开控制面板 -> 区域和语言选项 -> 其他设置 -> 十进制分隔符:点击输入点(.),列表分隔符输入逗号(,)。


5
无效。我按照指示进行了设置,但被忽略了。所有内容仍在第一列。 - Elliot
1
太神奇了,这刚好帮助了一位正在使用Office 2011的同事。我们将她的地区从使用“,”作为小数分隔符的波兰更改为英国,这就解决了问题。我不知道为什么这会有所不同... - John
3
这个解决方案对我有效(Excel 2013)。我调整了我的地区格式:将点号(.)设置为“小数分隔符”,逗号(,)作为“千位分隔符”,逗号(,)作为“列表分隔符”。 - cesargastonec
1
我正在使用Windows 10默认的“英语(加拿大)”格式,通常在使用Excel 2013-2016打开文件时正确地显示CSV文件(列分隔符)。最近我注意到,在重新打开CSV文件后,我的某个应用程序更改了默认的编号格式。根据这里指定的内容,恢复到以点(.)作为“小数分隔符”和逗号(,)作为“列表分隔符”的编号格式后,CSV文件显示正常。没有必要使用记事本黑客攻击CSV文件的第一行来添加“sep=,”的花哨解决办法。 - JP slash otterlover
1
终于成功了!在Notepad++中,经过比预期更长的时间尝试正则表达式替换分隔符、小数点/逗号以及不在引号中的字符等等之后,我想起了这个答案并且按照它指示的方式重新设置了我的语言设置。现在它能够正确地分离列和数字,并且没有弄乱任何文本。 - Fabian Röling
显示剩余3条评论

26

我知道已经有一个被接受的答案,但需要检查一项内容是CSV文件的编码。我有一个生成CSV文件的PowerShell脚本。默认情况下,它将它们编码为UCS-2 Little Endian (通过Notepad ++确认)。在Excel中,它会将文件打开为单列,我必须使用文本分列转换来拆分列。将脚本更改为将相同输出编码为"ASCII"(通过Notepad++确认为UTF-8无BOM),允许我直接打开CSV并拆分出列。 您也可以更改Notepad++中CSV的编码。

  • 菜单编码> 转换为UTF-8无BOM
  • 保存CSV文件
  • 在Excel中打开,列应该被拆分

3
我很欣赏这个答案。我喜欢使用 Some-Command | Out-File -Encoding Default 这个命令,通常会给出正确的 ANSI 编码(至少在美国是工厂默认设置)。 - Mister_Tom
所以如果您没有指定编码,Out-File 默认会将文件编码为非 Default 编码?我试图理解这个...它是默认的...但不是默认使用的...因此不是默认的? - jdgregson
使用“-Encoding Default”对我有用。谢谢! - Kirk Liemohn

21
你可以在Excel 2013中选择你想要的分隔符。转到“数据”->“文本分列”->选择“分隔符”->然后选择您的分隔符“Tab,分号,逗号,空格或其他”,您将立即在“数据预览”中看到更改,然后点击“完成”。一旦你得到了想要的格式,只需保存该文档即可使其永久有效。

2
这并没有解决主要问题。我们需要将其作为任何此类文件的默认行为,而不是仅在一个特定文件中修复它。 - Elliot

19

https://superuser.com/questions/238944/how-to-force-excel-to-open-csv-files-with-data-arranged-in-columns获取

在打开CSV文件时,Excel的行为严重依赖于您的本地设置和在“区域和语言”»“格式”»“高级”下选择的列表分隔符。默认情况下,Excel将假定每个CSV都是使用该分隔符保存的。只要CSV不来自其他国家,这是正确的!

如果您的客户在其他国家,他们可能会看到与您想象不同的结果。

例如,在这里,您可以看到德国版的Excel将使用分号而不是像美国那样使用逗号。

Regional Settings


这个解决方案对我有效(Excel 2013)。我调整了我的区域格式:我将点(.)设置为“小数分隔符”,逗号(,)设置为“千位分隔符”,并将逗号(,)设置为“列表分隔符”- cesargastonec Jul 13 '15 at 16:05 - Alex78191
1
或者您可以在Excel选项中更改十进制分隔符。https://superuser.com/a/1470373/ - Alex78191

4
另一个可能的问题是csv文件包含字节顺序标记"FEFF"。字节顺序标记旨在检测文件是否从使用大端或小端字节顺序的系统移动到相反字节顺序的系统。使用十六进制编辑器删除"FEFF"字节顺序标记应该可以让Excel读取该文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接