跳到工具
ViewCSV
无需上传文件

如何把 CSV 文件正确导入 Excel,不乱码、不丢数据

不要双击打开文件。在 Excel 中选择 数据 > 从文本/CSV,选中文件,在预览里检查编码(文件原始格式)和 分隔符,然后点 转换数据。在 Power Query 中删除自动添加的 更改的类型 步骤,把编号、代码和电话列设为文本,给数字列设置相应类型,再点 关闭并上载。如果想完全省掉这些导入设置,可以先把 CSV 转成带文本单元格的 XLSX。

导入之前先检查文件

导入要顺利,需要先弄清三件事:列与列之间用的是什么字符,文本以什么编码保存,以及哪些列是编号而不是数量。CSV 在线查看 和 CSV 校验 能在不改动文件的情况下把这三点都显示出来。

分隔符英文系统导出的文件多用逗号。很多欧洲系统用分号,因为逗号在那里是小数点。也会遇到制表符和竖线。
编码现在大多数导出文件是 UTF-8。国内较老的 Windows 软件和一些财务、ERP 系统常导出 GBK(GB2312/GB18030)编码的文件。选错编码会出现乱码,比如 é 变成 é,中文变成一串怪字符。
标题行确认第一行就是列名,上方没有报表标题或空行。
需要保护的列记下所有包含编号、代码、手机号、邮政编码,或超过 15 位数字(如身份证号、银行卡号)的列。这些列需要设为文本类型。

用“从文本/CSV”(Power Query)导入

这是当前 Microsoft 365 版 Excel 和较新的 Windows 版 Excel 的标准导入方式;带 Power Query 的 Mac 版 Excel 操作类似。不同版本的菜单名称可能略有差异。

  1. 在 数据 选项卡中选择 从文本/CSV(某些版本在 获取数据 > 来自文件 > 从文本/CSV),然后选中文件。
  2. 在预览中,把 文件原始格式 设为文件的编码,例如 65001: Unicode (UTF-8) 或 936: 简体中文(GB2312),并设置 分隔符。中文和重音字母应正常显示,每个值都应在各自的列里。
  3. 点 转换数据,不要点 加载:直接加载会套用 Excel 自动猜测的类型,长编号可能当场就被舍入。
  4. 在 Power Query 编辑器中查看 应用的步骤。Excel 通常会添加 提升的标题(把第一行用作列名)和 更改的类型。点旁边的 X 删除 更改的类型。
  5. 选中编号、代码和电话列,在 转换 选项卡中把 数据类型 设为 文本。数字转换步骤已经删除,这些列会直接从原始文件变成文本。
  6. 给需要计算的列设置 整数、小数 或 日期 类型。如果数字用逗号作小数点,请用 数据类型 > 使用区域设置,选择文件所用的区域。
  7. 点 主页 > 关闭并上载。
注意 顺序很重要。如果 更改的类型 还在上方时就把列设为文本,Excel 转成文本的是已经舍入过的数字,丢掉的位数依旧找不回来。如果 Excel 询问是替换当前转换还是添加新步骤,请选 替换当前转换。

有些版本在第一个预览窗口里还有 数据类型检测 下拉框。选 不检测数据类型 会把所有列都按文本加载,对编号来说很安全,之后只需修改数字列的类型。

用旧版文本导入向导导入

旧版向导会先让你逐列指定格式。在 Windows 版 Microsoft 365 Excel 中它默认是隐藏的:先在 Excel 选项的“数据”页中,于“显示旧数据导入向导”下勾选 从文本(旧版),再通过 数据 > 获取数据 > 旧版向导 > 从文本(旧版) 启动。较老的版本在 数据 选项卡上直接有 自文本,Mac 版 Excel 导入文本文件时也会打开类似的向导。

  1. 第 1 步:选择 分隔符号,把 文件原始格式 设为文件编码;如果第一行是列名,勾选 数据包含标题。
  2. 第 2 步:勾选分隔符(逗号、分号、Tab 键或其他),检查预览。
  3. 第 3 步:在预览中逐个选中需要保护的列,把 列数据格式 设为 文本。数字列保持 常规,日期列选 日期 并选对顺序,例如 YMD。
  4. 点 完成,选择数据的放置位置。

和 Power Query 一样,向导在任何值进入单元格之前就确定了类型,所以它能保住长编号,而事后改格式不行。

省掉导入设置:先转成 XLSX

如果不想让打开文件的人操心这些,就直接给他们工作簿而不是 CSV。CSV 转 Excel 在浏览器本地读取 CSV,不上传文件,并默认把每个值写成 Excel 文本单元格,Excel 也就无从猜测。

  1. 在 CSV 转 Excel 中打开 CSV。如果分列不对,在 导入设置 里调整分隔符或编码。
  2. 如果是固定宽度文本、同时用了多种分隔符,或标题行上方还有报表说明,请用 导入文本…:按分隔符、固定宽度或模式拆分,跳过开头的几行,确认预览后点 导入。
  3. 包含编号和代码的文件请保持 所有值都保留为文本。识别数字和 true/false 会把纯数字列变成数字;使用前先看看它如何处理电话号码和带 E 的代码。
  4. 点 下载 XLSX,再用 Excel 打开工作簿。

用示例文件试一试:里面有开头带 0 的编号、20 位订单号、像日期的代码,还有一条像公式的备注。

打开CSV 转 Excel下载示例 CSV4 行虚构数据,UTF-8 编码

常见导入问题及解决办法

  • 所有内容都挤在 A 列。 分隔符不对。在预览中选对分隔符,或在 ViewCSV 的 导入设置 中调整。
  • 中文乱码,重音字母显示成 é 或 ?。 编码不对。先试 UTF-8,不行再试 GBK/GB18030 或文件所在地区常用的编码。
  • 列名跑到了第一行数据里。 在 Power Query 中使用 将第一行用作标题,或在向导中勾选 数据包含标题。
  • 日期的日和月颠倒了。 把该列按文本导入,或按文件所用的区域设置其类型。
  • 长编号末尾变成了 0。 它们在你设为文本之前就被转换了。删除这次导入,从原始 CSV 重新开始;这里解释了为什么丢掉的位数无法恢复。
  • 数字无法求和。 它们被导入成了文本。在 Power Query 中把该列改为数字类型,或在 Excel 中使用 转换为数字。

分享结果之前

把工作表再存成 CSV 会丢掉类型信息,下一个双击打开的人会遇到同样的问题。请分享工作簿,或者把 CSV 连同这些导入步骤一起发出去。ViewCSV 转换工具可处理最大 25 MB、100,000 行、250 列、200 万个单元格的文件;更大的文件请先拆分 CSV 文件。

参考资料

内容参考 Microsoft 官方文档,并用我们自己的话进行了归纳。你的 Excel 版本中的菜单名称可能有所不同。

更多教程

CSV 与 Excel 教程