Table of contents
CSV在Excel中不能正确打开? 本教程调查了典型问题并提供了最有效的解决方案。
CSV格式通常用于在各种电子表格程序之间导入/导出数据。 CSV(逗号分隔值)这一名称意味着使用逗号来分隔数据字段。 但这是在理论上。 实际上,许多所谓的CSV文件使用其他字符来分隔数据,如分号或制表符。 一些实现用单引号或双引号包围数据字段,而其他的需要Unicode字节顺序标记(BOM),例如UTF-8,以便正确解释Unicode。 缺乏标准会产生CSV到Excel转换中的各种问题。
CSV文件在Excel中以一列打开
症状 当在Excel中打开csv文件时,所有的数据都出现在一列。
原因 为了在列中分割数据,Excel使用Windows区域设置中设置的列表分隔符。 这可能是逗号(在北美和其他一些国家)或分号(在欧洲国家)。 当特定的.csv文件中使用的分隔符与默认分隔符不同时,该文件以一列打开。
解决方案 对于这种情况,有几种可能的解决方案,包括VBA宏或Windows设置中的全局变化。 我们将展示如何在不改变你电脑上的默认列表分隔符的情况下快速解决这个问题,因此你的应用程序都不会受到影响。
改变CSV文件中的分隔符
为了使Excel能够读取带有不同分隔符的CSV文件,你可以直接在该文件中定义分隔符。 要做到这一点,用任何文本编辑器打开该文件(记事本就可以),并在第一行添加以下文字。 注意,它应该是在任何其他数据之前的单独一行。
- 用逗号分隔:sep=。
- 用分号分隔:sep=。
以同样的方式,你可以设置任何其他的自定义分隔符--只需在等号后面输入即可。
在定义了适当的分隔符后,你现在可以用通常的方式,从Excel本身或从Windows资源管理器打开该文件。
导入CSV文件到Excel时指定分隔符
不要在Excel中打开csv文件,而是使用文本导入向导(在所有版本中)或Power Query(在Excel 365 - 2016中)导入。
文本导入向导( 数据 标签> 来自文本 )在步骤2中提供了一些分隔符的选择。 一般来说,你会选择。
- 逗号 用于逗号分隔值文件
- 标签 用于文本文件
- 分号 用于分号分隔的数值文件
如果你不确定你的数据包含什么分隔符,可以尝试不同的分隔符,看看哪一个在数据预览中是正确的。
当创建Power Query连接时,你可以在预览对话窗口中挑选分隔符。
关于详细的步骤说明,请看上面链接的例子。
使用文本到列功能分割单元格
如果你的数据已经转移到了Excel,你可以通过使用 文本到列 基本上,它的工作方式与文本导入向导类似:你选择一个分隔符和 数据预览 反映了飞行中的变化。
完整的细节,请看如何在Excel中分割单元格。
如何在Excel CSV中保持前导零值
症状。 你的csv文件中的一些数值包含前导零,当文件在Excel中打开时,前面的零会丢失。
原因 默认情况下,Microsoft Excel将csv文件转换为 一般 格式,剥去前导零。
解决方案 而不是打开,将你的CSV导入到Excel,并选择 文本 有问题的栏目的格式。
使用文本导入向导
要开始 导入文本向导 自动,将文件扩展名从.csv改为.txt,然后从Excel打开文本文件。 或者启用从文本(遗留)功能,开始将CSV导入Excel。
在向导的第3步中,选择含有前导零值的列,并将其格式改为 文本 这将把数值导入为文本字符串,保持所有前导零的位置。
使用Power Query
如果你喜欢通过连接将csv文件导入Excel,有两种方法可以保留前导零。
方法1:以文本格式导入所有数据
在预览对话框中,在 数据类型检测 ,选择 不检测数据类型 你的csv文件的内容将作为文本加载到Excel中,所有的前导零将被保留。
注意:如果你的文件只包含了 文本 如果有不同种类的值,那么使用方法2为每一列单独定义一个适当的格式。
方法2:为每一列设置格式
如果你的csv文件包含各种数据类型,如文本、数字、货币、日期和时间,你可以明确指出每个特定列应该使用哪种格式。
- 在数据预览下方,点击 转换数据 .
- 在Power Query Editor中,选择你想保留前面的零的列,然后点击 数据类型 > 文本 .
- 关闭 & 载入 - 这将把结果加载到当前工作簿中的一个新工作表。
- 关闭 & 载入 到...--这将让你决定在哪里加载结果。
提示:这些方法还可以防止Excel试图自动执行的其他数据操作。 例如,如果导入的数据以"="开头,Excel将试图计算它。 通过应用 文本 格式,你表示这些值是字符串,而不是公式。
如何解决Excel中的CSV日期格式问题
症状。 将CSV转换为Excel后,日期的格式不正确,日和月被调换,一些日期被改变为文本,一些文本值被自动格式化为日期。
原因 在你的csv文件中,日期的书写格式与你的操作系统中设置的默认日期格式不同,因此Excel无法正确解释日期。
解决方案 根据你所面临的具体问题,尝试以下解决方案之一。
日期和月份混在一起
当Windows区域设置和csv文件中的日期格式不同时,Excel没有办法确定 毫米/日/年 它所寻找的日期被存储在 日/月/年 因此,日和月的单位是相反的。 1月3日 成为 3月1日 , 1月10日 成为 10月1日 等等。 此外,后面的日期 1月12日 被转换为文本字符串,因为不存在第13、14等月。
为了正确导入日期,运行文本导入向导,并选择适当的 日期 在步骤3中的格式。
一些数值被转换为日期
Microsoft Excel的设计是为了方便输入各种数值。 因此,如果Excel认为一个给定的数值代表一个日期,它就会被自动格式化为一个日期。 例如,文本字符串 4月23日 看起来很像 4月23日 ,以及 11/3 类似于 11月3日 ,所以这两个值都被转换为日期。
为了阻止Excel将文本值改为日期,使用已经熟悉的方法:通过导入CSV将其转换为Excel。 在步骤3的 文本导入向导 ,选择有问题的列并将其格式改为 文本 .
日期的格式不正确
当在Excel中打开一个csv文件时,日期通常以默认格式显示。 例如,在你的原始文件中,你可能有 5月7日-21日 或 05/07/21 ,而在Excel中则显示为 5/7/2021 .
要以所需的格式显示日期,请使用 格式化单元格 功能。
- 选择日期栏。
- 按Ctrl + 1,打开 格式化单元格 对话框。
- 关于 数量 选项卡,选择 日期 根据 类别 .
- 隶属 类型 ,选择所需的格式。
- 单击 "确定"。
如果预设的格式都不适合你,那么你可以按照《如何在Excel中制作自定义日期格式》中的解释,创建自己的格式。
防止Excel将数字转换为科学符号
症状。 将CSV转换为Excel后,长数字被格式化为科学符号,例如,1234578900显示为1.23E+09。
原因 在Microsoft Excel中,数字的精度被限制在15位。 如果你的csv文件中的数字超过了这个限制,Excel会自动将它们转换为科学符号,以符合这个限制。 如果一个数字包含超过15位有效数字,所有在最后的 "额外 "数字都会被改变为零。
解决方案 将长数字作为文本导入,或直接在Excel中改变数字格式。
将长数字作为文本导入
为了准确地将大的数字从CSV转移到Excel,运行 文本导入向导 并将目标列的格式设置为 文本 .
这是唯一真正的解决方案,以准确导入 数字字符串 它对诸如产品ID、账号、条形码等条目非常有效。
然而,如果你的值是数字,而不是字符串,这不是最好的方法,因为你无法对产生的文本值进行任何数学运算。
这种方法还可以帮助你在转换CSV文件时防止其他不需要的自动数据格式化。
改变Excel中的数字格式
如果你的数据已经在Excel中,你可以将格式从 一般 属于下列情况之一 文本 或 数量 如下图所示。
注意:这种方法不会恢复被删除的前面的零或第15位之后被替换成零的数字。
欲了解更多信息,请参见如何在Excel中格式化单元格。
让柱子更宽
在最简单的情况下,当一个数字包含的数字少于15位时,只需将一列加宽一点,就可以正常显示数字了。
更多细节,请参见如何调整Excel中的列的大小和自动适应。
这就是如何解决CSV到Excel转换中可能出现的最常见的问题。 谢谢你的阅读,下周见!