👉 项目官网:https://www.python-office.com/ 👈

👉 本开源项目的交流群 👈

github star gitee star atomgit star

AI编程 AI交流群

大家好,我是程序员晚枫。

今天给大家介绍一个我在工作中经常用到的神器:python-docx。它能够自动生成和修改Word文档,彻底告别手动复制粘贴和排版的烦恼!

什么是python-docx?

python-docx是一个专门用于操作Word文档的Python库。简单来说,它让你能够用代码来写Word,实现文档处理的自动化。

核心能力

  • 📝 创建全新的Word文档
  • 📖 读取现有文档内容
  • 🎨 设置文档样式和格式
  • 📊 添加表格、图片等元素

为什么要用python-docx?

想象一下这些场景:

  • 每月都要从Excel中复制数据到Word制作报告
  • 需要批量生成100份内容相似但数据不同的合同
  • 要给几十个文档统一修改页眉页脚

这些重复性工作,用python-docx几行代码就能搞定,省时省力还不会出错!

实战开始:从安装到第一个程序

1. 安装

1
pip install python-docx

2. 创建你的第一个自动化文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from docx import Document

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

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

# 添加段落
p = doc.add_paragraph('这是用python-docx生成的第一个文档!')

# 在段落后面追加内容
p.add_run('这些文字是加粗的').bold = True
p.add_run(',而这些是红色的。').font.color.rgb = RGBColor(255, 0, 0)

# 保存文档
doc.save('我的第一个自动化文档.docx')

create_simple_doc()

运行这段代码,你就得到了一个格式规范的Word文档!

更多实用功能

1. 添加表格

1
2
3
4
5
6
7
8
9
10
11
12
def add_table_to_doc():
doc = Document()

# 创建3x3表格
table = doc.add_table(rows=3, cols=3)

# 填充数据
for i in range(3):
for j in range(3):
table.cell(i, j).text = f'数据{i+1}-{j+1}'

doc.save('带表格的文档.docx')

2. 插入图片

1
2
3
4
5
6
7
8
9
10
from docx.shared import Inches

def add_image_to_doc():
doc = Document()
doc.add_heading('产品展示', level=1)

# 插入图片并设置大小
doc.add_picture('product.jpg', width=Inches(4.0))

doc.save('带图片的文档.docx')

3. 使用样式

1
2
3
4
5
6
7
8
9
def use_styles():
doc = Document()

# 应用内置样式
doc.add_paragraph('这是标题', style='Heading 1')
doc.add_paragraph('这是正文', style='Normal')
doc.add_paragraph('这是列表项', style='List Bullet')

doc.save('带样式的文档.docx')

真实工作场景应用

场景1:自动生成周报

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def generate_weekly_report(projects, achievements, plans):
doc = Document()

doc.add_heading('工作周报', level=0)

doc.add_heading('本周完成工作', level=1)
for project in projects:
doc.add_paragraph(project, style='List Bullet')

doc.add_heading('成果与问题', level=1)
doc.add_paragraph(achievements)

doc.add_heading('下周计划', level=1)
for plan in plans:
doc.add_paragraph(plan, style='List Bullet')

filename = f'周报_{datetime.now().strftime("%Y%m%d")}.docx'
doc.save(filename)
return filename

场景2:批量生成合同

1
2
3
4
5
6
7
8
9
10
11
12
def generate_contracts(client_list):
for client in client_list:
doc = Document('晚枫的合同模板.docx')

# 替换占位符
for paragraph in doc.paragraphs:
if '{{客户姓名}}' in paragraph.text:
paragraph.text = paragraph.text.replace('{{客户姓名}}', client['name'])
if '{{金额}}' in paragraph.text:
paragraph.text = paragraph.text.replace('{{金额}}', client['amount'])

doc.save(f'合同_{client["name"]}.docx')

我在项目中遇到的坑

虽然python-docx很强大,但在使用过程中我也踩过一些坑:

  1. 复杂格式支持有限:太复杂的页面设置可能无法实现
  2. 样式应用问题:有时候样式不生效,需要手动激活
  3. 只支持.docx格式:旧的.doc文件处理起来比较麻烦

我的建议

  • 先从简单的需求开始,逐步掌握
  • 多查阅官方文档,了解功能边界
  • 复杂需求可以结合其他库一起使用

学习资源推荐

  1. 官方文档:最全面的参考资料,https://python-docx.readthedocs.io/

总结

python-docx让Word文档处理变得简单高效。无论是批量生成报告、自动填充模板,还是统一修改格式,它都能帮你节省大量时间。

特别适合

  • 经常需要制作重复性文档的办公人员
  • 需要批量处理文档的开发者
  • 想要提高工作效率的Python学习者

互动话题:你在工作中遇到过哪些重复性的文档处理任务?欢迎在评论区分享,我们一起探讨自动化解决方案!

如果觉得本文对你有帮助,请点赞、在看、转发支持!


另外,大家去给小明的小红书👇账号点点赞吧~!我不想努力了,想吃软饭了。

小红书:爱吃火锅的小明

扫一扫,领红包

美团红包

滴滴红包

程序员晚枫专注AI编程培训,小白看完他和图灵社区合作的教程《30讲 · AI编程训练营》就能上手做AI项目。

🎓 AI 编程实战课程

想系统学习 AI 编程?程序员晚枫的 AI 编程实战课 帮你从零上手!