Word 文档生成与编辑

👤 我要萌萌哒 📦 v1.0.0 ⭐ 4.5 ⬇️ 519 下载
📄 办公效率 免费

📖 技能介绍


name: docx-generator display_name: "Word 文档生成与编辑" description: "需要创建、读取、编辑或处理 Word 文档(.docx / .dotx)时使用。触发词:'Word'、'word 文档'、'.docx'、'生成报告'、'制作合同/简历/方案/说明书'、'提取 word 内容'、'在文档里查找替换'、'给文档加页眉页脚/目录/表格'。也用于把任意内容排版成一份正式的 Word 文件。不要用它处理 PDF、Excel 或无关编程任务。中文创作场景尤其适合:小说大纲稿、投稿文档、合同、简历、工作总结。" license: "MIT(改写自 anthropics/skills docx,已去除私有辅助脚本依赖,改为自包含 python-docx 方案)"

小葱技能7w4.net有更新,你可以访问看下。


Word 文档(.docx)生成与编辑

.docx 本质是一个 ZIP 包,里面是 XML。按任务选方案:

任务 方案
新建 文档 python-docx(推荐,自包含,见下方模板)或 npm docx
编辑 已有文档 解压 → 改 word/document.xml → 重新压缩;或用 python-docx 的 Document('existing.docx') 追加/修改
读取 内容 python-docxdocument.paragraphs 遍历,或对文件跑 pandoc -t markdown file.docx

本技能根目录下的 references/docx_template.py 是一个完整可运行的示例(标题/多级标题/表格/列表/页脚页码),直接用 python references/docx_template.py <输出路径> 即可生成一份示范文档。

新建文档(python-docx)——踩坑要点

python-docx 已随本技能所需环境预装。模型熟悉 API,下面是高频坑:

  • 页面尺寸:默认 A4。要美式 Letter:from docx.shared import Inches 后用 document = Document() 设置 sections[0].page_width/height(Letter = 12240×15840 EMU,1 英寸=1440 EMU)。
  • 表格双宽:表格设 table.autofit=True 或给每列 cell.width = Inches(...);列宽之和应等于表格宽。
  • 表格底纹:用 WD_CELL_VERTICAL_ALIGNMENTshading element,不要整体 SOLID(会渲染成黑块)。简单做法是用浅灰 XML:见模板。
  • 列表:不要用字面量 ,用 document.add_paragraph(text, style='List Bullet')'List Number'
  • 图片from docx.embedded import Imageparagraph.add_run().add_picture(path, width=Inches(3)),需指定 width/height 之一。
  • 分页from docx.enum.text import WD_BREAK; paragraph.add_break(WD_BREAK.PAGE)
  • 不要用 \n 拼多行:每段用独立的 add_paragraph
  • 目录(TOC):python-docx 不自动生成真实 TOC 域;用内置 Heading 1/2/3 样式(在 Word 导航窗格里可见),并在文首放一句"右键→更新域→更新整个目录"的提示,或插入 TOC 域 XML(进阶,见模板注释)。
  • 不要用表格当分隔线:用段落 bottom border 画横线。

编辑已有文档

旧版 .doc 先转换:soffice --headless --convert-to docx file.doc(需 LibreOffice)。

from docx import Document
doc = Document('existing.docx')
# 遍历段落
for p in doc.paragraphs:
    if '旧词' in p.text:
        for run in p.runs:
            run.text = run.text.replace('旧词', '新词')
# 追加内容
doc.add_heading('新增章节', level=1)
doc.add_paragraph('新段落')
doc.save('out.docx')

Word 会把同一句话拆成很多 <w:r> run(修订标记、拼写检查),所以"看起来连在一起的短语"在 XML 里可能不是连续字符串——查找替换建议用 run.text 逐个替换,而不是整段正则。

验证输出

生成 .docx 后,转成 PDF 看一眼排版:

soffice --headless --convert-to pdf output.docx
pdftoppm -jpeg -r 100 output.pdf page
# 然后 Read 生成的 page-*.jpg 检查

依赖

python-docx(已预装于本技能环境)· 可选:pandoc · 可选:soffice(LibreOffice,用于转 PDF 验证 / 转 doc)。

中文创作场景示例

  • 投稿文档:用 Heading 1 当"卷名"、Heading 2 当"章名",Word 里一键生成目录。
  • 小说大纲稿:表格列"章节 / 核心冲突 / 钩子 / 字数",table.style='Light Grid Accent 1'
  • 合同/简历:分节 + 页脚页码(section.footer.add_paragraph().add_field('PAGE'))。
  • 以上全部在 references/docx_template.py 有可直接跑的样板。

🤖 AI 评测

质量中等偏上,文档说明详细且实用,踩坑要点很有价值,提供的代码示例基本可用。但文件较少,只有参考模板,缺少完整测试和更多示例,实际使用时可能需要自己调试。总体来说能较好地指导 Word 文档生成任务,但细节上还有完善空间。

📊 多维度评分

适应性4.5
规范性4.5
有效性4.7
可靠性3.9
可信度5

📁 包含文件 (2 个)

📄 SKILL.md 4.3 KB
📄 references/docx_template.py 4 KB