运营在模板 B 列后插入一列备注,导入后手机号列读到了地址,1200 条客户数据整体错位,地址字段里全是 138 开头的号码。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,代码按下标取列,row[1] 原本是手机号,插入一列后变成了备注。模板没有版本号,导入前也没有校验表头名称。
「导入字段错列」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。别只看报错的最后一行,往上看几行,真正的起因通常在上面。
header = next(reader)
idx = {name.strip(): i for i, name in enumerate(header)}
phone = row[idx['手机号']]
同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。
具体做法是,改成读第一行表头 用列名到下标的映射取值;模板加版本号和必填列清单 上传时先校验;缺列或多列直接拒绝 不要按位置硬猜。
最后用这个标准收尾,同一份插过列的模板再导入,接口提示 表头不匹配 缺少 手机号,修正后 1200 条数据各归其位。
