SuperAPI AI 工具集

sdo-docx-operations

办公与效率

查看项目

更新于 10-15 23:42

技能介绍

用途:为 officecli 在 .docx 上的 OOXML 编辑提供跨平台操作护栏与确定性辅助脚本,适用于需要 XML 级修改的标准文档。

主要能力:提供 add_bookmarks.py(图/表/引用书签插入与引用 run 替换)、fix_heading_tabs.py(标题编号-制表符-标题 run 修复)、fix_enum_tabs.py(枚举破折号-制表符-文本 run 修复)、fix_note_tabs.py(NOTE 编号-制表符-文本 run 修复与序列校验),以及共享助手 officecli_xml_common.py。脚本声明 PEP 723 内联元数据,通过 uv run 执行,例如:uv run scripts/add_bookmarks.py --doc <doc> --spec assets/specs/add_bookmarks.example.json。assets/schemas/ 提供 JSON Schema 契约,assets/specs/ 提供示例规格。

使用方式:多步编辑前用 officecli open <doc> 以常驻模式打开;一次执行一个变更命令并检查退出码;使用 style/ordinal 或显式 XPath 定位,不用 paraId 定位;模板填充、文本更新、段落添加优先用 officecli batch;变更前后用 officecli view/get/query 校验;结束时 officecli close <doc>。始终使用 uv run python,不用裸 python。

限制与安全规则:不要用 raw-set --action replace 搭配空 XML;书签名与 ID 保持唯一;保留不换行空格与显式制表符 run。幂等更新需注意:插入 Figure 段落前按精确匹配删除所有 style=Figure 段落(用 paragraph[style=Figure],不用 ~=),标题保留原位更新;重建表格用 while True/except RuntimeError 循环删除动态表格;按 paraId 删除需 try/except 包裹。Python zipfile/ElementTree 直接操作 OOXML 时,必须为文档中每个命名空间前缀调用 ET.register_namespace(),否则序列化会丢失根元素声明导致校验失败;优先用 officecli batch。提取段落用 extract_paragraphs(),不用朴素正则;提取 <w:rPr> 用平衡匹配,避免匹配到 <w:rPrChange>;批处理前用 validate_para_xml() 校验。参考资料见 references/ 下各文档。