导出的订单明细用 Excel 打开,订单号列显示 1.23457E+15,拉宽列宽也只恢复成 1234567890123460。原始 CSV 里的末四位是 7890。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,Excel 把纯数字串当双精度浮点解析,15 位有效数字之后的内容被四舍五入。显示只是表象,单元格里存的值已经变了,再另存也回不去。
「Excel 科学计数法」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。别只看报错的最后一行,往上看几行,真正的起因通常在上面。
python3 -c "import pandas as pd;df=pd.read_csv('orders.csv',dtype={'order_no':str});print(df['order_no'].head(3).tolist())"
同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。
具体做法是,导出时把订单号写成 ="1234..." 的形式 或者前置一个制表符;更稳的是直接导 xlsx 并把该列设成文本格式;已经打开的 CSV 用数据里的从文本导入 手动指定列为文本;核对时比对首尾各四位 别只看总条数。
最后用这个标准收尾,重新打开文件 订单号 18 位完整显示 末四位和源数据一致。
