Agent Skills
返回列表
📁

IHG合规培训矩阵更新

办公效率 更新于 2026.08.30

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_82284601/ihg-training-matrix。

技能介绍

要解决的问题

IHG 酒店的合规培训矩阵是一份 Excel 工作簿:第一个工作表是 Quick Search 快速查询页(用数组公式按工号列出未完成课程),第二个工作表是 Matrix 矩阵本体(行是员工、列是课程、单元格是完成日期)。每月从 HR 系统导出 CSV(UTF-16 LE、Tab 分隔、21 列),需要把其中的完成日期写回矩阵。

问题在于:用 openpyxl 加载再保存整个工作簿,会重写所有工作表的 XML。实测导致 Quick Search 丢失 t="str" 类型标记、ArrayFormula 溢出区被破坏、calcChain.xml 被删除,Excel 打开直接弹「文件损坏」。这个技能要解决的就是「只改日期,其余字节一个不动」。

技能如何工作

核心是 v4 的 zip/XML 层方案:把 .xlsx 当作 zip 包,只重写 xl/worksheets/sheet2.xml(Matrix),sheet1.xml、sharedStrings.xml、styles.xml、calcChain.xml 等条目字节原样保留。纯标准库(zipfile + ElementTree)实现,不依赖 Excel 进程,约 3 秒完成。

关键步骤:

  • 列索引对齐:CSV 的 Col 19(日/END_DATE)才是写入用的完成日期,Col 18 是开始日期,差一列会错写数周到数月;课程代码取 Col 11(Activity Code),不是 Col 10(Activity Type)。
  • 匹配规则:员工用 MERLIN_ID(Excel 的 J 列)匹配;课程代码支持四级匹配(去 * 精确匹配、加 * 前缀、去 -ZH 后缀、基础码遍历),多行课程编码按换行拆分逐行注册。
  • 写入与验证:日期写成纯序列号整数,检测到公式单元格即跳过并计数;内置验证包括非 sheet2 条目字节级对比、Quick Search 全量快照(316 单元格)、20 个写入点抽查、时间噪声检查、反职场骚扰课程的年份过滤。

适用边界与注意点

  • 禁止整体保存:v3(openpyxl 全量保存)与 PowerShell COM 方案均已弃用,zip/XML 层是当前唯一推荐路径。
  • 只处理已完成任务:Completion Status 必须严格等于 Completed;-01-ZH 等子模块完成不计入父课程,也不做映射。
  • 禁写区域:Col 12 完成率公式列和 Quick Search 工作表禁止任何写入;脚本遇到公式单元格会自动跳过。
  • 增量输出:每次生成 YYYYMMDD 版本号的新文件,绝不覆盖原版;跑完后仍需在 Excel 里抽查 1-2 位员工的课程日期与 CSV 的 Col 19 是否一致。

使用场景

  • 每月拿到 HR 导出的 21 列 CSV 后,把 Col 19 完成日期批量写入矩阵,且 Quick Search 页保持零改动。
  • 批量更新某月新完成任务的课程日期,输出 YYYYMMDD 版本文件,绝不覆盖上一版矩阵。
  • 课程编码单元格含多行内容时,按换行拆分逐行注册,再按四级匹配规则写入对应列。
  • 更换脚本或迁移更新方案后,需验证非 sheet2 条目字节级不变、Quick Search 快照一致。

适合人员

  • 酒店培训主管或 HR 数据管理员:每月要把 HR 导出的培训记录批量写回矩阵,且不能破坏 Quick Search 查询页。
  • 维护 IHG 合规培训工作簿的 IT 支持:需要用脚本安全地批量写日期,避免整体保存导致文件损坏。
  • 做 Excel 报表自动化的工程师:想在只改单个 sheet XML、无第三方依赖的前提下批量更新单元格并自动校验。