在日常办公与自动化文档处理中,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 字体设置依赖系统字体,可在模板中预定义样式 |
九、总结
通过本文的学习,你掌握了:
- 使用
python-docx创建、修改、读取 Word 文档。 - 向文档中添加标题、段落、图片、表格与样式。
- 批量生成 Word 报告的自动化技巧。
python-docx 的强大之处在于它能让你将文档处理与业务逻辑无缝结合,为办公自动化、报告生成、合同生成等场景提供极大便利。