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 / 自动化
仅在明确请求且政策允许时使用。
- 将会议笔记总结为决策/行动项;人工验证准确性。
- 从大纲起草初稿文档;不要发明事实或引用。
导航
资源
- references/docx-patterns.md - 高级格式化、样式、页眉页脚
- references/template-workflows.md - 邮件合并、批量生成
- references/tracked-changes.md - 跟踪更改:哪些可行,哪些不可行
- data/sources.json - 库文档链接
脚本
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)
模板
- assets/report-template.md - 标准报告结构
- assets/contract-template.md - 法律文档结构
- assets/doc-template-pack.md - 决策日志、会议笔记、变更日志模板
相关技能
- …/document-pdf/SKILL.md - PDF生成和转换
- …/docs-codebase/SKILL.md - 技术写作模式