Word 文档处理 (DOCX)
文档处理高复杂度全面的 Word 文档处理工具,支持创建、编辑、追踪更改和内容分析,适用于法律、学术、商业等专业场景。
💡 一句话介绍
使用 docx-js 创建新文档,使用 OOXML 编辑 修改现有文档,通过 Redlining 工作流 实现专业的文档审阅和追踪更改。
🎯 这个技能能做什么?
核心能力
📝 创建新文档
- 使用 JavaScript/TypeScript (docx-js)
- 完整的样式和格式控制
- 段落、表格、列表、图片
✏️ 编辑现有文档
- Python OOXML 编辑库
- 精确的 XML 级别操作
- 保留原始格式和样式
🔍 追踪更改(Redlining)
- 专业文档审阅工作流
- 标记插入、删除、修改
- 适合法律/学术/商业文档
📊 内容分析
- Pandoc 提取文本和结构
- 访问评论、元数据、嵌入媒体
- 转换为 Markdown 或图片
🎬 适合什么场景?
典型使用场景
场景 1: 法律合同审阅
审阅和修改合同,使用追踪更改标记所有修订。
示例任务:
- 修改合同条款"30 天"为"60 天"
- 添加新条款并标记为插入
- 删除过时条款并保留原文
工作流: Redlining 工作流(批量处理修改)
产出: 带追踪更改的 .docx 文件,可在 Word 中查看修订
场景 2: 自动生成报告
从数据生成格式化的 Word 报告。
示例任务:
- 从 JSON 数据生成季度报告
- 插入图表和表格
- 应用公司品牌样式
工作流: docx-js 创建新文档
产出: 完整格式化的 .docx 报告
场景 3: 文档内容提取
提取 Word 文档的文本、评论和元数据。
示例任务:
- 转换文档为 Markdown
- 提取所有评论和追踪更改
- 分析文档结构
工作流: Pandoc 文本提取 + XML 解析
产出: Markdown 文件或结构化数据
📸 快速示例
示例 1: 创建简单文档
需求: 创建包含标题和段落的 Word 文档
代码:
const docx = require('docx');
const { Document, Paragraph, TextRun, Packer } = docx;
const doc = new Document({
sections: [{
children: [
new Paragraph({
text: "文档标题",
heading: "Heading1"
}),
new Paragraph({
children: [
new TextRun({
text: "这是一段普通文本。",
bold: false
})
]
})
]
}]
});
// 导出为 .docx
Packer.toBuffer(doc).then(buffer => {
fs.writeFileSync("document.docx", buffer);
});
示例 2: 追踪更改 - 修改文本
需求: 将"30 天"改为"60 天"并标记为追踪更改
工作流:
- 转换为 Markdown 查看内容
- 解压 .docx 文件
- 使用 Python 脚本修改 XML
- 重新打包为 .docx
关键代码(仅标记变化部分):
# 仅标记实际更改的文本
replacement = (
'<w:r w:rsidR="00AB12CD"><w:t>合同期限为 </w:t></w:r>'
'<w:del><w:r><w:delText>30</w:delText></w:r></w:del>'
'<w:ins><w:r><w:t>60</w:t></w:r></w:ins>'
'<w:r w:rsidR="00AB12CD"><w:t> 天。</w:t></w:r>'
)
结果: Word 中显示删除线"30"和下划线"60"
示例 3: 提取文档内容
需求: 将 Word 文档转换为 Markdown
命令:
# 保留追踪更改
pandoc --track-changes=all document.docx -o output.md
# 接受所有更改
pandoc --track-changes=accept document.docx -o output.md
# 拒绝所有更改
pandoc --track-changes=reject document.docx -o output.md
🚀 如何开始使用?
快速决策:我应该用哪种方法?
graph TD
A[Word 文档任务] --> B{任务类型?}
B -->|读取/分析| C[Pandoc 转 Markdown]
B -->|创建新文档| D[使用 docx-js]
B -->|编辑现有文档| E{文档来源?}
E -->|自己的文档<br/>简单修改| F[OOXML 基础编辑]
E -->|他人文档<br/>或专业文档| G[Redlining 工作流]
style G fill:#ff6b6b
style D fill:#4ecdc4
style C fill:#95e1d3
关键提示:
- ⚠️ 法律/学术/政府文档: 必须使用 Redlining 工作流
- 💡 简单编辑: 可以直接 OOXML 编辑
- 🆕 新文档: 使用 docx-js(最简单)
🎓 谁适合使用这个技能?
- ✅ 法律专业人士 - 合同审阅、条款修订
- ✅ 学术研究者 - 论文协作、批注管理
- ✅ 商业分析师 - 报告自动生成、数据插入
- ✅ 内容编辑 - 文档审校、版本控制
- ✅ 开发者 - 文档自动化、批量处理
📚 深入了解
想了解详细的工作流程、完整的 API 文档和高级技巧?
👉 查看完整指南
完整指南包含:
- 🔧 三种工作流程的详细步骤
- 📖 docx-js 和 OOXML 库的完整 API
- 💻 Redlining 工作流的批量处理策略
- 🎨 代码示例和最佳实践
- 📄 参考文档翻译(docx-js.md / ooxml.md)
🔗 相关技能
- PDF 文档处理 → - PDF 表单填写和内容提取
- PPT 演示文档 → - PowerPoint 自动生成
- Excel 表格处理 → - 数据分析和财务建模
⚠️ 重要提示
追踪更改工作流
对于专业文档(法律、学术、政府),必须使用 Redlining 工作流,不要直接替换文本,要标记所有修改。
文档格式
.docx 文件本质上是包含 XML 文件的 ZIP 压缩包。解压后可以直接编辑 XML,但要小心保持结构完整性。