技能|Word母本驱动的表单自动生成流程
适用场景
手里有一批"母本"表格(Excel/Word 表样),要一次性变成系统里可用的结构化表单,且不想在系统里另存一份结构定义时。触发词:配套表单、母本解析、批量生成表单、表头不在第一行。纯标准库实现,零第三方依赖。
操作步骤
- 定母本识别规则:按目录/文件名判定归属域,按文件名中的编号判定归属制度;不匹配的一律跳过,不猜。
- 定位表头(最大的坑):母本 sheet 常见结构是「标题行 / 来源说明 / 空行 / 表头 / 数据」,表头不在第 1 行。
取前 9 行里非空单元格最多的一行当表头;直接取首行会全表解析成 0 行。 - 切分数据行:表头之后逐行取,跳过全空行与说明页(表头字段数少于阈值的不做表单)。
- 同名母本去重:按文件名里的版本号打分取大者(v1.9 胜无版本号);把"谁被谁取代"逐条打印,不要静默丢弃。
- 生成字段定义:字段名用列序(c1..cN),标签用中文表头;按表头语义选控件——证件号/账号类自动脱敏(只留后四位),备注/说明/措施类多行,其余单行。
不要用日期/数字强校验,母本里"2026-09""7 日"这类会被拒。 - 并入系统:自动生成项与手工维护项同名时,手工优先不被覆盖;入口遍历要用"运行时合并后的集合",不是写死的常量列表(否则只显示少数几张)。
- 导入既有数据:仅当目标表为空时导入,避免重复;导入时按字段类型做脱敏。
注意边界
- 一数一源:字段与数据全部来自母本,系统不另存结构副本;母本改了重启即同步。
- 启动顺序硬约束:先注册生成的表单 → 再建表 → 再灌种子数据。顺序反了会报"表不存在"。
- 生成数量要打印出来核对(生成 N / 新增 M / 受保护 K)。
反例避雷
- 表头取首行 → 全部解析成 0 行,还以为是文件坏了。
- 用日期/数字强类型 → 母本里的中文写法被拒,数据整批进不来。
- 入口遍历写死常量 → 明明生成了 50 多张,页面只显示 5 张。
- 同名母本静默去重 → 出了问题不知道实际用的是哪一份。
- 先建表后注册 → "no such table"。
关联笔记
- [[技能|全页面回归冒烟法]]
实战战绩
2026-09-28 首跑:15 份母本 → 生成 56 张表单(52 张新增、4 张因与手工版同名受保护)、导入 779 行既有数据;域页入口 57 个全部显示;某域两份同名"填写版"表格,无版本号那份的 7 张子表被 v1.9 全数取代且留痕可查。
版本记录
| 版本 | 日期 | 变更 |
|---|---|---|
| v1.0.0 | 2026-09-28 | 首版实战固化:表头定位、版本去重、手工优先、启动顺序、导入口径 |