当前位置: 首页 > news >正文

Python自学19-Python操作Word和PowerPoint文件

Python自学19-Python操作Word和PowerPoint文件

1. 前言

在日常办公中,Word 和 PowerPoint 是最常用的文档类型。

手动处理大量这类文件时,不仅耗时还容易出错。而 Python 凭借其丰富的第三方库,能够高效地实现对 Word 和 PowerPoint 文件的创建、编辑、读取等操作,极大地提升工作效率。

无论是批量生成合同、自动化制作汇报PPT,还是提取文档内容做分析,Python 都能显著提升效率,减少重复劳动。本文将详细介绍如何使用 Python 操作 Word 和 PowerPoint 文件,帮助大家掌握这一实用技能。

2. 常用库对比

库名支持类型核心功能优点难度
python-docxWord (.docx)读写段落、表格、图片、样式社区成熟、语法简单⭐⭐
docxtplWord (.docx)模板填充生成文档支持 Jinja2 模板,适合批量生成⭐⭐
python-pptxPPT (.pptx)操作幻灯片、形状、图片、图表功能强大,适合自动化生成⭐⭐⭐
pywin32Word/PPT调用本机 Office COM 接口控制力强,接近 VBA⭐⭐⭐⭐

建议:跨平台优先用 python-docx / python-pptx,Windows 且需精细控制时用 pywin32


3. 操作 Word 文档

3.1 读取与修改 Word(python-docx)

from docx import Document# 打开文档
doc = Document("demo.docx")# 读取段落
for para in doc.paragraphs:print(para.text)# 添加段落
doc.add_paragraph("这是新添加的段落。")# 保存
doc.save("demo_modified.docx")

3.2 模板批量生成 Word(docxtpl)

from docxtpl import DocxTemplatetpl = DocxTemplate("合同模板.docx")
context = {"name": "张三","date": "2025-09-18","role": "Python开发工程师"
}
tpl.render(context)
tpl.save("合同_张三.docx")

应用场景:批量生成合同、通知书、证书等。


4. 操作 PowerPoint 文档

4.1 创建 PPT(python-pptx)

from pptx import Presentation
from pptx.util import Inchesprs = Presentation()# 添加标题幻灯片
slide = prs.slides.add_slide(prs.slide_layouts[0])
slide.shapes.title.text = "Python 自动化 PPT"
slide.placeholders[1].text = "副标题内容"# 添加图片
slide2 = prs.slides.add_slide(prs.slide_layouts[5])
slide2.shapes.add_picture("image.jpg", Inches(1), Inches(1), width=Inches(4))prs.save("demo.pptx")

4.2 修改已有 PPT

from pptx import Presentationprs = Presentation("demo.pptx")
for slide in prs.slides:for shape in slide.shapes:if shape.has_text_frame:shape.text_frame.text = shape.text_frame.text.replace("旧词", "新词")
prs.save("demo_updated.pptx")

5. 高级玩法:调用本机 Office(pywin32)

适合需要:

  • 导出为 PDF
  • 保留复杂格式
  • 调用 Office 内置功能(如动画、宏)

示例(Word 转 PDF):

import win32com.client as win32word = win32.Dispatch("Word.Application")
doc = word.Documents.Open(r"C:\path\demo.docx")
doc.SaveAs(r"C:\path\demo.pdf", FileFormat=17)  # 17 = PDF
doc.Close()
word.Quit()

6. 实战案例:批量生成入职通知书 + 汇报PPT

from docxtpl import DocxTemplate
from pptx import Presentationstaff_list = [{"name": "张三", "date": "2025-09-20", "role": "数据分析师"},{"name": "李四", "date": "2025-09-22", "role": "后端开发"}
]# 批量生成 Word
tpl = DocxTemplate("通知书模板.docx")
for s in staff_list:tpl.render(s)tpl.save(f"通知书_{s['name']}.docx")# 自动生成 PPT 汇报
prs = Presentation()
for s in staff_list:slide = prs.slides.add_slide(prs.slide_layouts[1])slide.shapes.title.text = f"{s['name']} 入职汇报"slide.placeholders[1].text = f"岗位:{s['role']}\n入职日期:{s['date']}"
prs.save("入职汇报.pptx")

7. 总结

  • python-docx / python-pptx:跨平台、适合批量生成与内容提取
  • docxtpl:模板批量生成神器
  • pywin32:Windows 下精细控制 Office
  • 可结合 NLP 做文档内容分析、关键词提取
  • 可与 调度脚本(如 Airflow、Crontab)结合,实现全自动化办公流
http://www.dtcms.com/a/389469.html

相关文章:

  • Android使用GPU指南
  • 贪心算法应用:装箱问题(BFD算法)详解
  • 如何入门到实战策略学习ETF期权?
  • 贪心算法应用:最小反馈顶点集问题详解
  • 物联网与智能体:下一代数字化生态的关键
  • 关于lvs+keeplived在mysql分库分上负载部署
  • Springboot获取bean的工具类
  • C++学习日记
  • DRAM的原理
  • Ansible插件开发
  • ubuntu 两个网卡进行映射
  • 通信高效的数据并行分布式深度学习-综述-图表解读
  • 为何我的无刷电机在FOC开环控制下迅速发烫?
  • Docker多容器编排:Compose 实战教程——深入探索与实践
  • 网络交换机分类与功能解析
  • FPGA学习笔记——Vivado创建工程(2022版)
  • Python 美食菜谱可视化:Django 后端 + Vue 前端 + 豆果爬虫 + Echarts(大数据方向)(建议收藏)✅
  • 【从入门到精通Spring Cloud】声明式服务调用组件OpenFeign
  • 【Linux】系统部分——线程互斥
  • Qt QVBoxPlotModelMapper详解
  • Arcgis中的模型构建器技术之按属性批量建库并对应输出
  • Selenium UI 自动化:自定义 send_keys 方法实现与优化
  • golang后端面试复习
  • webpack学习笔记-entry
  • webpack学习之output
  • 应急响应靶机-WindowsServer2022-web2
  • Netty:网络编程基础
  • VulnHub打靶记录——AdmX_new
  • 筑牢安全防线,守护线上招标采购管理软件
  • TP8框架安全文件与文件夹权限相关设置