Back to skills
extension
Category: Development & EngineeringNo API key required

docx

Comprehensive document creation, editing, and analysis features, supporting revision mode (tracked changes), comments, format retention, and text extraction. Suitable for handling professional documents (.docx files), including: (1) creating new documents, (2) modifying or editing content, (3) handling revision marks, (4) adding comments, or any other document tasks. Trigger keywords: docx, Word, document processing, revision marks.

personAuthor: jakexiaohubgithub

DOCX 创建、编辑与分析

概述

用户可能会要求你创建、编辑或分析 .docx 文件的内容。.docx 文件本质上是一个包含 XML 文件和其他资源的 ZIP 压缩包,你可以对其进行读取或编辑。针对不同的任务,有不同的工具和工作流可供选择。

工作流决策树

阅读/分析内容

请使用下方的“文本提取”或“原始 XML 访问”部分。

创建新文档

请使用“创建新的 Word 文档”工作流。

编辑现有文档

  • 你自己的文档 + 简单的更改 使用“基础 OOXML 编辑”工作流。

  • 他人的文档 使用 “红线修订工作流”(推荐的默认方式)。

  • 法律、学术、商业或政府文档 必须使用 “红线修订工作流”

阅读和分析内容

文本提取

如果你只需要读取文档的文本内容,应该使用 pandoc 将文档转换为 markdown。Pandoc 对保留文档结构提供了极佳的支持,并且可以显示修订痕迹:

# 将文档转换为带有修订痕迹的 markdown
pandoc --track-changes=all path-to-file.docx -o output.md
# 选项: --track-changes=accept/reject/all

使用 python-docx 创建文档

基础文档创建

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

document = Document()

# 添加标题
document.add_heading('文档标题', 0)

# 添加段落(支持格式化)
p = document.add_paragraph('这是一个普通段落,包含 ')
p.add_run('粗体').bold = True
p.add_run(' 和 ')
p.add_run('斜体').italic = True
p.add_run(' 文本。')

# 添加各级标题
document.add_heading('一级标题', level=1)
document.add_heading('二级标题', level=2)

# 添加列表
document.add_paragraph('无序列表项 1', style='List Bullet')
document.add_paragraph('无序列表项 2', style='List Bullet')
document.add_paragraph('有序列表项 1', style='List Number')
document.add_paragraph('有序列表项 2', style='List Number')

# 添加图片
document.add_picture('image.png', width=Inches(4))

# 保存文档
document.save('output.docx')

表格操作

from docx import Document
from docx.shared import Cm

document = Document()

# 创建表格
table = document.add_table(rows=1, cols=3)
table.style = 'Table Grid'

# 设置表头
hdr_cells = table.rows[0].cells
hdr_cells[0].text = '序号'
hdr_cells[1].text = '名称'
hdr_cells[2].text = '描述'

# 添加数据行
data = [
    ('1', '项目A', '描述A'),
    ('2', '项目B', '描述B'),
    ('3', '项目C', '描述C'),
]
for num, name, desc in data:
    row_cells = table.add_row().cells
    row_cells[0].text = num
    row_cells[1].text = name
    row_cells[2].text = desc

document.save('table_demo.docx')

页眉页脚设置

from docx import Document

document = Document()
section = document.sections[0]

# 设置页眉
header = section.header
header_para = header.paragraphs[0]
header_para.text = "左侧文本\t中间文本\t右侧文本"
header_para.style = document.styles["Header"]

# 设置页脚
footer = section.footer
footer_para = footer.paragraphs[0]
footer_para.text = "第 X 页"

document.add_paragraph('正文内容...')
document.save('header_footer.docx')

自定义样式

from docx import Document
from docx.shared import Pt, RGBColor
from docx.enum.style import WD_STYLE_TYPE

document = Document()

# 创建自定义段落样式
styles = document.styles
custom_style = styles.add_style('CustomHeading', WD_STYLE_TYPE.PARAGRAPH)
custom_style.font.name = 'Arial'
custom_style.font.size = Pt(16)
custom_style.font.bold = True
custom_style.font.color.rgb = RGBColor(0, 0, 128)

# 使用自定义样式
document.add_paragraph('使用自定义样式的标题', style='CustomHeading')

# 创建字符样式
char_style = styles.add_style('Highlight', WD_STYLE_TYPE.CHARACTER)
char_style.font.color.rgb = RGBColor(255, 0, 0)
char_style.font.bold = True

# 应用字符样式
p = document.add_paragraph('这段文字包含 ')
p.add_run('高亮文本', style='Highlight')
p.add_run(' 在中间。')

document.save('styled_doc.docx')