先分清原文件和表格显示
邮编可能包含开头的 0、字母、空格或连字符,不应当作计算用的数值。Excel 打开 CSV 时可能自动把看起来像数字的字段转换为数值,导致开头的 0 消失。CSV 本身不会携带工作簿里的列类型设置。
先复制一份导出文件,用文本编辑器搜索原邮编。如果文件仍是 02108,而表格变成了 2108,问题发生在导入解释阶段。排查时保留原文件,避免把修改后的结果覆盖回去。
原始文本:02108 不希望发生的数字转换:2108 JSON 字符串:"02108" 香港邮编原始值:""
导入前就把邮编列设为文本
在桌面 Excel 的“数据”菜单选择“从文本/CSV”,选中文件后进入数据转换,把邮编列设为“文本”再加载。如果 Power Query 已自动添加数字类型转换步骤,应先删除或修正那一步,避免前导 0 已在上游丢失。不同版本的菜单文字可能略有区别。
使用旧版文本导入向导时,可在预览中选中邮编列,再指定文本类型。CSV 的双引号用于包住字段内容,不等于强制 Excel 按文本保存。
丢失以后,优先重新导入
开头的 0 已丢失后,再改成文本类型并不能告诉 Excel 原来的字符串是什么。有未修改的导出文件时,优先重新导入。固定宽度数字格式只能解决部分显示问题,不能统一修复各国邮编。
不要把所有目的地都补成五位数字:本站各国邮编格式不同,香港则没有邮编。JSON 导出把邮编保留为字符串,香港保存为空字符串;读取 JSON 的程序也应保留这个类型。
结合本站做一次导出检查
生成并收藏一条带前导 0 的样例,进入“已保存地址”后先检查搜索和国家筛选,因为导出只包含当前可见结果。导出 CSV,按文本导入邮编列,再与原始文件逐项对照。
希望保留工作簿列设置时,可以另存为 XLSX;如果再次导出 CSV,应再用文本编辑器检查新文件的实际内容。这是接收端的导入操作说明,本站不能控制 Excel 的自动转换设置。
来源与延伸阅读
- Microsoft — Keeping leading zeros and large numbers
- Microsoft — Import or export text files
- Microsoft — Text Import Wizard