Python编程实战 - Python实用工具与库 - 操作Word:python-docx

在日常办公与自动化文档处理中,Word(.docx)文件的批量生成、内容提取、格式化操作都是高频需求。 例如:自动生成报告、合同模板、简历文档、项目文档等。 而 Python 提供了一个非常强大的库 ------ python-docx,让我们能够轻松操作 Word 文件的内容和格式。

本文将带你系统学习 python-docx 的基础与实战操作。


一、安装与基本概念

1. 安装 python-docx

bash 复制代码
pip install python-docx

2. 核心概念

在操作 Word 时,你可以将 .docx 文件理解为一个层级结构:

复制代码
Document → Paragraph(段落)→ Run(文本块)
  • Document:表示整个 Word 文件。
  • Paragraph:表示一个段落。
  • Run:表示段落中连续的、格式一致的文本。

二、创建 Word 文件

让我们从零开始创建一个 Word 文档。

python 复制代码
from docx import Document

# 创建文档对象
doc = Document()

# 添加标题
doc.add_heading('Python自动化报告', level=1)

# 添加段落
doc.add_paragraph('这是使用 python-docx 自动生成的 Word 文档。')

# 添加加粗、斜体、下划线文本
p = doc.add_paragraph('文字样式示例:')
p.add_run('加粗').bold = True
p.add_run('、斜体').italic = True
p.add_run('、下划线').underline = True

# 保存文件
doc.save('Python报告.docx')

执行后,你将得到一个格式化良好的 Word 文档。


三、读取 Word 文件内容

读取现有 Word 文档同样简单。

python 复制代码
from docx import Document

doc = Document('Python报告.docx')

for para in doc.paragraphs:
    print(para.text)

输出:

复制代码
Python自动化报告
这是使用 python-docx 自动生成的 Word 文档。
文字样式示例:加粗、斜体、下划线

如果你需要进一步处理,可以按段落或按"Run"级别操作。


四、插入标题、列表与图片

1. 插入标题

python 复制代码
doc.add_heading('二、自动化生成内容', level=2)

level 参数控制标题层级(1~9)。

2. 插入无序/有序列表

python 复制代码
doc.add_paragraph('第一项内容', style='List Number')
doc.add_paragraph('第二项内容', style='List Bullet')

3. 插入图片

python 复制代码
doc.add_picture('chart.png', width=None, height=None)

你可以用 from docx.shared import Inches 设置大小:

python 复制代码
from docx.shared import Inches

doc.add_picture('chart.png', width=Inches(3))

五、创建表格并写入数据

表格是 Word 文档中非常常见的结构。 python-docx 可以轻松生成带表头的表格。

python 复制代码
from docx import Document

doc = Document()

table = doc.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 = [
    ['Alice', '销售部', '90'],
    ['Bob', '市场部', '85'],
    ['Cindy', '技术部', '95']
]

for name, dept, score in data:
    row = table.add_row().cells
    row[0].text = name
    row[1].text = dept
    row[2].text = score

doc.save('员工成绩表.docx')

六、修改与格式化文本

1. 设置字体样式

python 复制代码
from docx.shared import Pt, RGBColor

p = doc.add_paragraph()
run = p.add_run('自定义字体样式文字')
run.font.name = 'Arial'
run.font.size = Pt(14)
run.font.bold = True
run.font.color.rgb = RGBColor(0x42, 0x24, 0xE9)

2. 设置段落对齐方式

python 复制代码
from docx.enum.text import WD_ALIGN_PARAGRAPH

p = doc.add_paragraph('居中对齐示例')
p.alignment = WD_ALIGN_PARAGRAPH.CENTER

七、批量生成报告(实战案例)

假设你有一份成绩表,需要为每个学生生成一份 Word 报告。

python 复制代码
from docx import Document

students = [
    {'name': 'Alice', 'score': 90},
    {'name': 'Bob', 'score': 85},
    {'name': 'Cindy', 'score': 95},
]

for s in students:
    doc = Document()
    doc.add_heading(f'{s["name"]} 的成绩报告', level=1)
    doc.add_paragraph(f'学生姓名:{s["name"]}')
    doc.add_paragraph(f'成绩:{s["score"]}')
    
    result = '优秀' if s["score"] >= 90 else '良好'
    doc.add_paragraph(f'综合评价:{result}')
    
    filename = f'{s["name"]}_成绩报告.docx'
    doc.save(filename)

执行后,每个学生都会得到独立的 Word 成绩报告,非常适合自动化办公场景。


八、常见问题与技巧

问题 解决方案
无法打开 .doc 文件 python-docx 仅支持 .docx 格式
文本样式无效 确保设置在 Run 层级,而不是段落
中文字体不生效 Word 字体设置依赖系统字体,可在模板中预定义样式

九、总结

通过本文的学习,你掌握了:

  1. 使用 python-docx 创建、修改、读取 Word 文档。
  2. 向文档中添加标题、段落、图片、表格与样式。
  3. 批量生成 Word 报告的自动化技巧。

python-docx 的强大之处在于它能让你将文档处理与业务逻辑无缝结合,为办公自动化、报告生成、合同生成等场景提供极大便利。


相关推荐
程序猿DD3 小时前
OctaFuse Gateway 2.15.0:MCP 聚合、向量 Embeddings 与官方目录同步
后端·agent
VidDown5 小时前
24fps 转 25fps 不只是改个数字:帧率转换、PAL/NTSC 与音频补偿
python·网络协议·音视频·视频编解码·视频
余槐i5 小时前
PostgreSQL 函数索引报错 must be immutable:3种绕法与代价
数据库·后端·sql·postgresql·性能优化
需要8266 小时前
Spring Bean 生命周期:从实例化到销毁的完整钩子
java·后端·spring
死磕音视频7 小时前
让小模型做选择题:限定候选项并读取 logits 概率的入门实践(附 Python 代码)
开发语言·python·大模型·文本分类·transformers
凤山老林7 小时前
Spring Boot 接入国密 SM2/SM3/SM4 的一些实践记录
spring boot·后端·python
伯恩bourne8 小时前
Spring Boot Bean 注册的两种方式:@Component 家族 vs @Configuration + @Bean
java·spring boot·后端
张彦峰ZYF8 小时前
停顿短不等于延迟低:G1、ZGC 与低延迟服务的目标分野、代价账本与选型标定
后端·回收暂停、应用停止总时长·到达安全点、分配停滞·屏障吃吞吐、并发线程吃核心·并发窗口吃堆余量·分区式靠挑回收集兑现目标·染色指针式不支持压缩引用
pride.li9 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉
databook9 小时前
用 Pydantic AI 从零搭建一个能干活的 AI Agent
人工智能·python