← PyPDF2 | docxtpl →

python-docx

python-docx 是一个用于创建和修改 Microsoft Word (.docx) 文件的 Python 库。

安装

pip install python-docx

创建 Word 文档

from docx import Document
from docx.shared import Pt, RGBColor, Inches

# 创建文档
doc = Document()

# 添加标题
doc.add_heading('文档标题', level=0)
doc.add_heading('一级标题', level=1)
doc.add_heading('二级标题', level=2)

# 添加段落
paragraph = doc.add_paragraph('这是一个普通段落。')

# 添加带格式的段落
paragraph = doc.add_paragraph()
run = paragraph.add_run('这是粗体文本。')
run.bold = True

run = paragraph.add_run(' 这是斜体文本。')
run.italic = True

run = paragraph.add_run(' 这是下划线文本。')
run.underline = True

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

# 保存文档
doc.save('example.docx')
print("文档已保存为 example.docx")

添加表格

from docx import Document

doc = Document()

# 添加表格
table = doc.add_table(rows=4, cols=3)
table.style = 'Table Grid'

# 设置表头
header_cells = table.rows[0].cells
header_cells[0].text = '姓名'
header_cells[1].text = '年龄'
header_cells[2].text = '城市'

# 填充数据
data = [
    ['张三', 25, '北京'],
    ['李四', 30, '上海'],
    ['王五', 28, '广州']
]

for i, row_data in enumerate(data):
    row = table.rows[i + 1]
    row.cells[0].text = row_data[0]
    row.cells[1].text = str(row_data[1])
    row.cells[2].text = row_data[2]

doc.save('table_example.docx')

添加图片

from docx import Document
from docx.shared import Inches

doc = Document()

# 添加段落
doc.add_paragraph('下面是一张图片:')

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

# 添加带标题的图片
doc.add_heading('图片标题', level=2)
doc.add_picture('image.png', width=Inches(3.0))
doc.add_paragraph('图片说明文字')

doc.save('image_example.docx')

设置页面格式

from docx import Document
from docx.shared import Pt, Inches

doc = Document()

# 设置页面边距
sections = doc.sections
for section in sections:
    section.top_margin = Inches(1)
    section.bottom_margin = Inches(1)
    section.left_margin = Inches(1.25)
    section.right_margin = Inches(1.25)

# 添加内容
doc.add_heading('页面格式示例', level=1)
doc.add_paragraph('这个文档有自定义的页面边距。')

doc.save('page_format.docx')

读取 Word 文档

from docx import Document

# 读取文档
doc = Document('example.docx')

# 读取所有段落
for para in doc.paragraphs:
    print(para.text)

# 读取所有表格
for table in doc.tables:
    for row in table.rows:
        for cell in row.cells:
            print(cell.text, end=' | ')
        print()

# 读取文档信息
print(f"段落数: {len(doc.paragraphs)}")
print(f"表格数: {len(doc.tables)}")

修改现有文档

from docx import Document

# 打开现有文档
doc = Document('example.docx')

# 修改段落
for para in doc.paragraphs:
    if '旧文本' in para.text:
        para.text = para.text.replace('旧文本', '新文本')

# 修改表格
for table in doc.tables:
    for row in table.rows:
        for cell in row.cells:
            if '旧值' in cell.text:
                cell.text = cell.text.replace('旧值', '新值')

# 保存修改后的文档
doc.save('modified_example.docx')
💡 提示:python-docx 适合创建和修改简单的 Word 文档,对于复杂的格式需求可能需要使用其他工具。
← PyPDF2 | docxtpl →