文档DOCX处理技能 document-docx

这个技能用于自动化处理Microsoft Word .docx文档,包括创建、编辑、模板填充、内容提取和格式转换,适用于报告、合同、提案等场景,支持Python和Node.js编程。关键词:文档处理、DOCX、自动化、Python、Node.js、模板、分析。

后端开发 0 次安装 0 次浏览 更新于 3/7/2026

name: document-docx description: 使用Python/Node.js(python-docx、docxtpl、mammoth.js、docx)创建、编辑和分析Microsoft Word .docx文件(报告、合同、提案),包括样式、表格、页眉页脚、模板填充、内容提取和转换到HTML;支持审阅工作流(评论/高亮)并在需要时通过OOXML检查跟踪更改。

文档DOCX技能 - 快速参考

这个技能支持为报告、合同、提案、文档和模板驱动的输出创建、编辑和分析.docx文件。

现代最佳实践(2026):

  • 优先使用模板和样式而不是手动格式化。
  • .docx视为可编辑的源文件;将PDF作为发布工件。
  • 如果外部分发,包括基本的可访问性卫生(标题、表头、替代文本)。

快速参考

任务 工具/库 语言 何时使用
创建DOCX python-docx Python 报告、合同、提案
创建DOCX docx Node.js 服务器端文档生成
转换到HTML mammoth.js Node.js 网页显示、内容提取
解析DOCX python-docx Python 提取文本、表格、元数据
模板填充 docxtpl Python 邮件合并、基于模板的生成
审阅工作流 Word比较、评论/高亮 任意 无需OOXML手术的人工审阅
跟踪更改 OOXML检查、docx4j/OpenXML SDK/Aspose 任意 真正的红线或解析跟踪更改

工具选择

  • 优先使用docxtpl当非开发者必须在Word中编辑布局/设计时。
  • 优先使用python-docx当格式复杂度适中时进行结构编辑(段落/表格/页眉页脚)。
  • 优先使用docx(Node.js)用于TypeScript-heavy堆栈中的服务器端生成。
  • 优先使用mammoth用于文本优先提取或DOCX到HTML转换(最佳努力;可能丢失一些布局保真度)。

已知限制(围绕这些计划)

  • .doc(旧版)不被这些库支持;首先转换到.docx(例如,使用LibreOffice)。
  • python-docx无法可靠创建真正的跟踪更改;使用Word比较或专门的OOXML工具。
  • 目录和许多字段是占位符,直到在Word中打开/更新。

核心操作

创建文档(Python - python-docx)

from docx import Document
from docx.shared import Inches, Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH

doc = Document()

# 标题
title = doc.add_heading('文档标题', 0)
title.alignment = WD_ALIGN_PARAGRAPH.CENTER

# 带格式的段落
para = doc.add_paragraph()
run = para.add_run('粗体和')
run.bold = True
run = para.add_run('斜体文本。')
run.italic = True

# 表格
table = doc.add_table(rows=3, cols=3)
table.style = 'Table Grid'
for i, row in enumerate(table.rows):
    for j, cell in enumerate(row.cells):
        cell.text = f'第{i+1}行, 第{j+1}列'

# 图片
doc.add_picture('image.png', width=Inches(4))

# 保存
doc.save('output.docx')

创建文档(Node.js - docx)

import { Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell } from 'docx';
import * as fs from 'fs';

const doc = new Document({
  sections: [{
    properties: {},
    children: [
      new Paragraph({
        children: [
          new TextRun({ text: '粗体文本', bold: true }),
          new TextRun({ text: ' 和普通文本。' }),
        ],
      }),
      new Table({
        rows: [
          new TableRow({
            children: [
              new TableCell({ children: [new Paragraph('单元格1')] }),
              new TableCell({ children: [new Paragraph('单元格2')] }),
            ],
          }),
        ],
      }),
    ],
  }],
});

Packer.toBuffer(doc).then((buffer) => {
  fs.writeFileSync('output.docx', buffer);
});

基于模板的生成(Python - docxtpl)

from docxtpl import DocxTemplate

doc = DocxTemplate('template.docx')
context = {
    'company_name': 'Acme公司',
    'date': '2025-01-15',
    'items': [
        {'name': '小工具A', 'price': 100},
        {'name': '小工具B', 'price': 200},
    ]
}
doc.render(context)
doc.save('filled_template.docx')

提取内容(Python - python-docx)

from docx import Document

doc = Document('input.docx')

# 提取所有文本
full_text = []
for para in doc.paragraphs:
    full_text.append(para.text)

# 提取表格
for table in doc.tables:
    for row in table.rows:
        row_data = [cell.text for cell in row.cells]
        print(row_data)

样式参考

元素 Python方法 Node.js类
标题1 add_heading(text, 1) HeadingLevel.HEADING_1
粗体 run.bold = True TextRun({ bold: true })
斜体 run.italic = True TextRun({ italics: true })
字体大小 run.font.size = Pt(12) TextRun({ size: 24 })(半磅)
对齐 WD_ALIGN_PARAGRAPH.CENTER AlignmentType.CENTER
分页符 doc.add_page_break() new PageBreak()

做 / 避免(2025年12月)

  • 使用一致的标题级别和目录用于长文档。
  • 记录决策和行动项,包括责任人和截止日期。
  • 将文档存储在可版本控制、可搜索的系统中。

避免

  • 使用手动格式化代替样式(破坏一致性)。
  • 没有所有者或评审周期的文档(快速过时)。
  • 复制/粘贴而不更新定义和链接。

输出质量检查清单

  • 结构:一致的标题层次结构、样式和(需要时)自动生成的目录。
  • 决策:捕获决策/行动项,包括责任人 + 截止日期(不埋藏在散文中)。
  • 版本控制:文档ID + 版本 + 变更摘要;定义评审周期。
  • 可访问性卫生:标题/阅读顺序正确;表头标记;非装饰性图片的替代文本。
  • 重用:使用assets/doc-template-pack.md用于决策日志和重复文档类型。

可选:AI / 自动化

仅在明确请求且政策允许时使用。

  • 将会议笔记总结为决策/行动项;人工验证准确性。
  • 从大纲起草初稿文档;不要发明事实或引用。

导航

资源

脚本

  • scripts/docx_inspect_ooxml.py - 无依赖的OOXML检查(包括跟踪更改信号)
  • scripts/docx_extract.py - 提取文本/表格到JSON(需要python-docx
  • scripts/docx_render_template.py - 渲染docxtpl模板(需要docxtpl
  • scripts/docx_to_html.mjs - 转换.docx到HTML(需要mammoth

模板

相关技能