社保批量导入格式转换
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_9e99a1ca/social-insurance-formatter。
技能介绍
要解决什么问题
人事或经办同事手里往往是社保明细 Excel:增员名单和主表挤在同一份表里,列布局也不等于社保窗口要求的「参保导入模板」。若手工逐行改学历代码、民族代码、Excel 日期序列号和手机号浮点格式,既慢又容易在导入时被系统拒单。
本技能面向的是:把明细表右侧增员区域的数据,映射成官方 Sheet1 可写入的行,并保留模板里用于下拉校验的参照 Sheet。
技能如何工作
流程可以概括为四步:
- 定位源数据:在含「增员」的 Sheet 中找表;找不到则列出全部 Sheet 名供你指定。
- 读模板区域:从第 4 行起读列 28–33(姓名、身份证、文化程度、参保时间、移动电话、民族);读前用第 2 行表头核对列是否仍对得上。
- 字段转换:学历简称→全称→带代码前缀(如
31 大学专科);民族加两位代码;参保时间把 Excel 序列号转成日期;电话用str(int(...))去掉.0。 - 写入输出:以你从成都社保系统下载的官方模板为底,只清空 Sheet1 数据区并写入结果,不得改动学历、民族、岗位性质、毕业院校地域类别四个校验 Sheet。
实现上依赖 openpyxl 的 load_workbook(..., data_only=True),否则读到的是公式文本,字段会全是 None。可执行脚本见技能内的 scripts/convert_to_official.py。
适用边界与注意点
- 列位置随源文件版本可能变化,不能假设永远是 28–33 列;表头不对就要改映射。
- 官方参保模板不由技能附带,需自行从成都社保系统下载。
- 源文件若是「左右两栏」布局,增员数据在右侧从第 28 列起,不要从第 1 列读主表。
- 输出文件名与具体单位字段规则以当地系统当期模板为准;映射表见
references/mapping-tables.md。
使用场景
- 每月从新收到的社保明细 Excel 右侧增员区提取姓名、身份证等列,生成可直接填入官方参保导入模板 Sheet1 的数据
- 源表里文化程度是「大专」「本科」简称、参保时间是 46186 这类序列号时,按映射表批量转成系统要求的带代码格式再导入
- 经办在导入前发现手机号被 Excel 存成 13800000000.0,需要整表转成纯文本号码以避免成都社保系统报错
- 单位换版明细表后列 28–33 可能对不上,先核对第 2 行表头再跑转换脚本输出新 Excel
适合人员
- 企业人事专员:每月把总部下发的社保明细里增员名单转成当地窗口要求的官方导入格式
- 社保外包或代理记账经办:同时处理多家客户明细表,需统一处理学历、民族代码和日期序列号
- 使用 openpyxl 做表格自动化的内部 IT:要把成都社保导入规则固化成可重复执行的转换流程
- 刚接手参保业务的行政:已下载官方模板,希望按技能里的列位与 Gotchas 避免读错左侧主表或覆盖校验 Sheet