news 2026/4/22 11:53:11

Python自动化办公:用python-docx高效处理Word文档

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python自动化办公:用python-docx高效处理Word文档

1. 为什么选择python-docx处理Word文档

在日常办公中,我们经常需要处理大量Word文档。无论是批量生成报告、合同,还是统一修改格式,手动操作不仅效率低下,还容易出错。这时候,python-docx就能大显身手了。

python-docx是Python中专门用于操作Word文档的库。它最大的优势在于能够用代码自动化完成那些重复性工作。比如,我最近接手一个项目,需要为200多个客户生成个性化合同。如果手动操作,至少要花3天时间。而用python-docx写个脚本,不到1小时就搞定了。

这个库特别适合以下场景:

  • 需要批量生成格式统一的文档
  • 需要从数据库或其他数据源自动填充内容到Word
  • 需要定期更新大量文档中的特定内容
  • 需要确保文档格式完全一致

与手动操作相比,python-docx能确保每次生成的文档格式完全相同,完全避免了人为失误。而且一旦写好脚本,以后类似的工作都可以复用,效率提升不是一点半点。

2. 快速安装与环境配置

2.1 安装python-docx库

安装python-docx非常简单,只需要一条pip命令:

pip install python-docx

如果你在国内,可以使用阿里云镜像加速安装:

pip install -i https://mirrors.aliyun.com/pypi/simple/ python-docx

我建议使用虚拟环境来管理Python包,这样可以避免不同项目间的依赖冲突。创建虚拟环境的命令是:

python -m venv docx_env source docx_env/bin/activate # Linux/Mac docx_env\Scripts\activate # Windows

2.2 验证安装

安装完成后,可以写个简单的测试脚本验证是否安装成功:

from docx import Document doc = Document() doc.add_paragraph("Hello, python-docx!") doc.save("test.docx")

运行这个脚本后,如果当前目录下生成了test.docx文件,并且打开后能看到"Hello, python-docx!"这段文字,就说明安装成功了。

3. 创建和编辑Word文档

3.1 创建新文档

创建一个全新的Word文档非常简单:

from docx import Document doc = Document() # 创建空白文档 doc.save("new_document.docx") # 保存文档

这样就会在当前目录下生成一个名为new_document.docx的空白Word文档。

3.2 添加标题和段落

添加内容也很直观。比如要添加一个一级标题和几个段落:

from docx.enum.text import WD_PARAGRAPH_ALIGNMENT # 添加一级标题并居中 title = doc.add_heading("年度工作报告", level=1) title.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 添加正文段落 doc.add_paragraph("这是报告的第一部分内容。") doc.add_paragraph("这是报告的第二部分内容。")

add_heading方法的level参数可以指定标题级别,1是一级标题,2是二级标题,以此类推。

3.3 格式化文本

python-docx可以精细控制文本格式:

from docx.shared import Pt, RGBColor p = doc.add_paragraph("这段文字包含") p.add_run("加粗").bold = True p.add_run("和") p.add_run("红色").font.color.rgb = RGBColor(255, 0, 0) p.add_run("以及") p.add_run("大号字").font.size = Pt(20)

这段代码会在一个段落中混合普通文本、加粗文本、红色文本和大号文本。add_run方法可以在段落中添加具有不同格式的文字块。

4. 高级功能应用

4.1 处理表格

表格是Word文档中常用的元素。python-docx可以方便地创建和编辑表格:

# 创建一个4行3列的表格 table = doc.add_table(rows=4, cols=3) # 填充表格数据 data = [ ["姓名", "年龄", "职业"], ["张三", "28", "工程师"], ["李四", "35", "设计师"], ["王五", "42", "经理"] ] for row_idx in range(4): row_cells = table.rows[row_idx].cells for col_idx in range(3): row_cells[col_idx].text = data[row_idx][col_idx] # 添加一行新数据 new_row = table.add_row().cells new_row[0].text = "赵六" new_row[1].text = "31" new_row[2].text = "销售"

4.2 插入图片

插入图片也很简单:

from docx.shared import Cm # 插入图片,默认大小 doc.add_picture("logo.png") # 插入指定大小的图片 doc.add_picture("photo.jpg", width=Cm(10), height=Cm(7.5))

4.3 分页与样式

需要分页时可以使用:

doc.add_page_break()

python-docx还支持使用Word内置样式:

# 使用内置样式 doc.add_paragraph("这是强调文本", style="Intense Quote") doc.add_paragraph("这是列表项", style="List Bullet")

5. 读取和修改现有文档

5.1 读取文档内容

python-docx不仅能创建文档,还能读取和修改已有文档:

doc = Document("existing.docx") for paragraph in doc.paragraphs: print(paragraph.text)

5.2 修改文档内容

读取后可以直接修改内容:

# 修改第一个段落 doc.paragraphs[0].text = "新的标题" # 修改表格内容 table = doc.tables[0] table.cell(0, 0).text = "新的表头" # 保存修改 doc.save("modified.docx")

5.3 提取图片

从文档中提取图片稍微复杂一些:

import os for rel in doc.part.rels: rel_obj = doc.part.rels[rel] if "image" in rel_obj.target_ref: with open(os.path.basename(rel_obj.target_ref), "wb") as f: f.write(rel_obj.target_part.blob)

6. 实战案例:批量生成报告

让我们看一个实际案例:批量生成员工绩效报告。

假设我们有一个员工数据列表:

employees = [ {"name": "张三", "department": "技术部", "score": 95}, {"name": "李四", "department": "市场部", "score": 88}, # 更多员工数据... ]

我们可以写一个函数来为每个员工生成报告:

def generate_report(employee): doc = Document() # 添加标题 title = doc.add_heading(f"{employee['name']}的绩效报告", level=1) title.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 添加基本信息 doc.add_paragraph(f"部门:{employee['department']}") doc.add_paragraph(f"绩效评分:{employee['score']}") # 添加评语 if employee["score"] >= 90: doc.add_paragraph("表现优异,建议晋升。", style="Intense Quote") elif employee["score"] >= 80: doc.add_paragraph("表现良好,继续保持。", style="Intense Quote") else: doc.add_paragraph("有待提高,建议培训。", style="Intense Quote") # 保存文件 doc.save(f"{employee['name']}_绩效报告.docx")

然后批量生成所有报告:

for emp in employees: generate_report(emp)

这样就能为每个员工生成一份个性化的绩效报告,大大提高了工作效率。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 11:50:44

车载诊断自动化实战:基于CANoe.Diva与CDD的ECU诊断测试全流程解析

1. 车载诊断自动化测试入门指南 第一次接触车载诊断测试时,我被各种专业术语搞得晕头转向。直到真正上手操作CANoe.Diva这套工具,才发现自动化诊断测试并没有想象中那么复杂。简单来说,这就像给汽车ECU做"体检"——通过标准化的诊断…

作者头像 李华
网站建设 2026/4/22 11:49:42

AI Agent 真正抬高的,不是概念门槛,而是项目表达门槛

AI Agent 真正抬高的,不是概念门槛,而是项目表达门槛 现在很多人不是不会讲 Agent,而是讲不出自己到底做过什么 这半年我一个很强的感受是,Agent 这个词已经不稀缺了。会讲的人越来越多,会背框架的人也越来越多&#x…

作者头像 李华
网站建设 2026/4/22 11:44:41

终极抖音下载工具:免费快速批量保存无水印视频

终极抖音下载工具:免费快速批量保存无水印视频 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音…

作者头像 李华
网站建设 2026/4/22 11:43:46

保姆级教程:在STM32CubeIDE里配置FreeRTOS和LWIP,快速搭建你的TCP服务器

STM32CubeIDE实战:FreeRTOS与LWIP融合构建高并发TCP服务器 第一次在STM32CubeIDE里配置FreeRTOS和LWIP时,看着满屏的配置选项和自动生成的代码,我仿佛置身于乐高积木工厂——每个零件都很精致,但不知道从哪开始拼装。本文将带你用…

作者头像 李华