返回顶部
d

docxWord文档处理

Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files). Triggers include: any mention of 'Word doc', 'word document', '.docx', or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when extracting or reorganizing content from .docx files, inserting or replacing images in documents, performing find-and-replace in Word files, working with tracked changes or comments,

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
306
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

docx

DOCX 创建、编辑与分析

概述

.docx 文件是一个包含 XML 文件的 ZIP 压缩包。

快速参考

任务方法
读取/分析内容pandoc 或解包后查看原始 XML
创建新文档
使用 docx-js - 详见下方创建新文档 | | 编辑现有文档 | 解包 → 编辑 XML → 重新打包 - 详见下方编辑现有文档 |

转换 .doc 为 .docx

旧版 .doc 文件在编辑前必须进行转换:

bash
python scripts/office/soffice.py --headless --convert-to docx document.doc

读取内容

bash

提取文本(含修订标记)


pandoc --track-changes=all document.docx -o output.md

访问原始 XML

python scripts/office/unpack.py document.docx unpacked/

转换为图片

bash
python scripts/office/soffice.py --headless --convert-to pdf document.docx
pdftoppm -jpeg -r 150 document.pdf page

接受修订

要生成一个接受所有修订的干净文档(需要 LibreOffice):

bash
python scripts/accept_changes.py input.docx output.docx



创建新文档

使用 JavaScript 生成 .docx 文件,然后进行验证。安装:npm install -g docx

设置

javascript const { Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell, ImageRun, Header, Footer, AlignmentType, PageOrientation, LevelFormat, ExternalHyperlink, InternalHyperlink, Bookmark, FootnoteReferenceRun, PositionalTab, PositionalTabAlignment, PositionalTabRelativeTo, PositionalTabLeader, TabStopType, TabStopPosition, Column, SectionType, TableOfContents, HeadingLevel, BorderStyle, WidthType, ShadingType, VerticalAlign, PageNumber, PageBreak } = require(docx);

const doc = new Document({ sections: [{ children: [/ 内容 /] }] });
Packer.toBuffer(doc).then(buffer => fs.writeFileSync(doc.docx, buffer));

验证

创建文件后,进行验证。如果验证失败,解包、修复 XML 并重新打包。 bash python scripts/office/validate.py doc.docx

页面尺寸

javascript
// 关键:docx-js 默认使用 A4,而非 US Letter
// 始终显式设置页面尺寸以确保结果一致
sections: [{
properties: {
page: {
size: {
width: 12240, // 8.5 英寸(DXA 单位)
height: 15840 // 11 英寸(DXA 单位)
},
margin: { top: 1440, right: 1440, bottom: 1440, left: 1440 } // 1 英寸页边距
}
},
children: [/ 内容 /]
}]

常见页面尺寸(DXA 单位,1440 DXA = 1 英寸):

纸张宽度高度内容宽度(1 英寸页边距)
US Letter12,24015,8409,360
A4(默认)
11,906 | 16,838 | 9,026 |

横向方向: docx-js 内部会交换宽度/高度,因此传入纵向尺寸,让它处理交换:
javascript
size: {
width: 12240, // 传入短边作为宽度
height: 15840, // 传入长边作为高度
orientation: PageOrientation.LANDSCAPE // docx-js 会在 XML 中交换它们
},
// 内容宽度 = 15840 - 左边距 - 右边距(使用长边)

样式(覆盖内置标题)

使用 Arial 作为默认字体(通用支持)。保持标题为黑色以确保可读性。

javascript
const doc = new Document({
styles: {
default: { document: { run: { font: Arial, size: 24 } } }, // 12pt 默认
paragraphStyles: [
// 重要:使用精确 ID 覆盖内置样式
{ id: Heading1, name: Heading 1, basedOn: Normal, next: Normal, quickFormat: true,
run: { size: 32, bold: true, font: Arial },
paragraph: { spacing: { before: 240, after: 240 }, outlineLevel: 0 } }, // TOC 需要 outlineLevel
{ id: Heading2, name: Heading 2, basedOn: Normal, next: Normal, quickFormat: true,
run: { size: 28, bold: true, font: Arial },
paragraph: { spacing: { before: 180, after: 180 }, outlineLevel: 1 } },
]
},
sections: [{
children: [
new Paragraph({ heading: HeadingLevel.HEADING_1, children: [new TextRun(标题)] }),
]
}]
});

列表(绝不使用 Unicode 项目符号)

javascript
// ❌ 错误 - 绝不要手动插入项目符号字符
new Paragraph({ children: [new TextRun(• 项目)] }) // 错误
new Paragraph({ children: [new TextRun(\u2022 项目)] }) // 错误

// ✅ 正确 - 使用带 LevelFormat.BULLET 的编号配置
const doc = new Document({
numbering: {
config: [
{ reference: bullets,
levels: [{ level: 0, format: LevelFormat.BULLET, text: •, alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] },
{ reference: numbers,
levels: [{ level: 0, format: LevelFormat.DECIMAL, text: %1., alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 720, hanging: 360 } } } }] },
]
},
sections: [{
children: [
new Paragraph({ numbering: { reference: bullets, level: 0 },
children: [new TextRun(项目符号项)] }),
new Paragraph({ numbering: { reference: numbers, level: 0 },
children: [new TextRun(编号项)] }),
]
}]
});

// ⚠️ 每个 reference 创建独立的编号
// 相同 reference = 连续(1,2,3 然后 4,5,6)
// 不同 reference = 重新开始(1,2,3 然后 1,2,3)

表格

关键:表格需要双重宽度 - 同时设置表格的 columnWidths 和每个单元格的 width。缺少任何一个,表格在某些平台上会渲染不正确。

javascript
// 关键:始终设置表格宽度以确保一致渲染
// 关键:使用 ShadingType.CLEAR(而非 SOLID)以防止黑色背景
const border = { style: BorderStyle.SINGLE, size: 1, color: CCCCCC };
const borders = { top: border, bottom: border, left: border, right: border };

new Table({
width: { size: 9360, type: WidthType.DXA }, // 始终使用 DXA(百分比在 Google Docs 中会出错)
columnWidths: [4680, 4680], // 必须总和等于表格宽度(DXA:1440 = 1 英寸)
rows: [
new TableRow({
children: [
new TableCell({
borders,
width: { size: 4680, type: WidthType.DXA }, // 也在每个单元格上设置
shading: { fill: D5E8F0, type: ShadingType.CLEAR }, // 使用 CLEAR 而非 SOLID
margins: { top: 80, bottom: 80, left: 120, right: 120 }, // 单元格内边距(内部,不增加宽度)
children: [new Paragraph({ children: [new TextRun(单元格)] })]
})
]
})
]
})

表格宽度计算:

始终使用 WidthType.DXA — WidthType.PERCENTAGE 在 Google Docs 中会出错。

javascript
// 表格宽度 = columnWidths 之和 = 内容宽度
// US Letter 带 1 英寸页边距:12240 - 2880 = 9360 DXA
width: { size: 9360, type: WidthType.DXA },
columnWidths: [7000, 2360] // 必须总和等于表格宽度

宽度

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 docx-anthropic-1776089525 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 docx-anthropic-1776089525 技能

通过命令行安装

skillhub install docx-anthropic-1776089525

下载

⬇ 下载 docx v1.0.0(免费)

文件大小: 41.29 KB | 发布时间: 2026-4-15 12:32

v1.0.0 最新 2026-4-15 12:32
Initial release of the docx skill for working with Word documents:

- Create, read, edit, and manipulate .docx files, including formatting, comments, images, and tracked changes.
- Comprehensive usage guide for common tasks: extraction, conversion, and validation of Word documents.
- Provides code and command-line examples for document generation (JavaScript, Bash, Python).
- Details on setting page size, styles, lists, and critically correct ways to create tables for cross-platform compatibility.
- Strict triggers: only activates on .docx/Word document requests, not for PDFs, Google Docs, or spreadsheets.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部