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


相关推荐
程序员爱钓鱼2 小时前
Python编程实战 - Python实用工具与库 - 操作PDF:pdfplumber、PyPDF2
后端·python
Python私教2 小时前
什么是爬虫
后端
啾啾啾6662 小时前
连接一个新的服务器时,打开PyCharm时报错:报错内容是服务器磁盘或配额满了
python·pycharm
Python私教2 小时前
Python爬虫怎么学
后端
长不大的蜡笔小新2 小时前
掌握NumPy:ndarray核心特性与创建
开发语言·python·numpy
欧阳码农2 小时前
盘点这两年我接触过的副业赚钱赛道,对于你来说可能是信息差
前端·人工智能·后端
luoganttcc2 小时前
已知 空间 三个 A,B C 点 ,求 顺序 经过 A B C 三点 圆弧 轨迹 ,给出 python 代码 并且 画出图像
c语言·开发语言·python
武子康2 小时前
大数据-151 Apache Druid 集群落地 [上篇] MySQL 元数据 + HDFS 深存与低配调优
大数据·后端·nosql
小何开发3 小时前
Springboot-WebService 服务端发布与客户端调用
java·spring boot·后端