所有档案软件数据升级的核心卡点是旧数据格式不统一、字段缺失或映射错误,本次方案通过「标准化字段映射+批量补全校验」实现零代码落地,无需专业技术人员操作。
用记事本打开旧CSV文件,检查每列标题是否与新模板的「映射对应旧字段」列名称匹配(如旧列名是「档号」对应模板的「档案编号」)。若不匹配,用Excel批量修改旧CSV的列头:全选列头→右键「重命名」→批量替换不一致的名称,确保与模板列名完全对应。
复制以下代码到记事本,修改前3行的文件路径为你实际的路径,保存为「archive_mapper.py」,双击即可运行:
```python import csv import openpyxl 以下3行需修改为你的实际文件路径 old_csv = "D:/old_archives.csv" 旧档案CSV路径 template_csv = "D:/field_template_v2.1.csv" 新软件官方模板路径 output_csv = "D:/final_archives_ready.csv" 最终可导入的档案路径 读取新模板要求的标准字段列表 new_fields = [] with open(template_csv, encoding="utf-8") as f: reader = csv.DictReader(f) new_fields = [row["新软件字段名称"] for row in reader] 批量映射旧数据到新字段,缺失字段自动补默认值 final_rows = [] with open(old_csv, encoding="utf-8") as f: old_reader = csv.DictReader(f) for row in old_reader: new_row = {} for field in new_fields: 处理涉密等级:旧数据无则填「非涉密」 if field == "涉密等级": new_row[field] = row.get(field, "非涉密") 处理日期格式:旧数据用「/」,新软件要求「-」 elif field == "归档日期" and field in row: new_row[field] = row[field].replace("/", "-") 其他字段:有旧值取旧值,无则留空 else: new_row[field] = row.get(field, "") final_rows.append(new_row) 导出最终可导入的CSV文件 with open(output_csv, "w", encoding="utf-8", newline="") as f: writer = csv.DictWriter(f, fieldnames=new_fields) writer.writeheader() writer.writerows(final_rows) print("映射完成!最终文件路径:", output_csv) ```
注意:运行前必须确保旧CSV和模板CSV的编码都是UTF-8,若旧软件默认导出GBK编码,用记事本打开旧文件→「另存为」→选择编码为「UTF-8」覆盖即可,不要用其他编码格式。
用Excel打开final_archives_ready.csv,完成3项必查:
打开新档案软件,进入「数据管理→数据导入」功能,按以下精确操作: