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

Python对ppt进行文本替换、插入图片、生成表格

目录

  • 1. 安装pptx
  • 2. 文本替换和插入图片
  • 3. 生成表格

1. 安装pptx

pip install python-pptx

2. 文本替换和插入图片

  • 文本通过占位符例如{{$xxx}}进行标记,然后进行替换;图片通过ppt中的图形和图片中的占位符进行标记
  • ppt如下

在这里插入图片描述

  • 具体实现
from pptx import Presentation
from pptx.enum.shapes import MSO_SHAPE_TYPE# 加载已有的PPT文件
prs = Presentation('ppt.pptx')
# 图片地址
new_image_path = 'python.png'
# 遍历每一张幻灯片
for slide in prs.slides:# 遍历幻灯片中的每一个形状for shape in slide.shapes:# 检查shape是不是文本框if shape.has_text_frame:if "{{$keyValue_text}}" in shape.text:# 替换文本shape.text = shape.text.replace("{{$keyValue_text}}", "文本替换后的内容")# 检查shape是不是表格if shape.has_table:for row in shape.table.rows:for cell in row.cells:if "{{$keyValue_table}}" in cell.text:cell.text = cell.text.replace('{{$keyValue_table}}', '表格替换后的内容')# 检查shape是不是一个图形(MSO_SHAPE_TYPE中还包含TABLE、TEXT_BOX)if shape.shape_type == MSO_SHAPE_TYPE.AUTO_SHAPE:if '{{$image}}' in shape.text:# 删除旧的图片占位符slide.shapes._spTree.remove(shape.element)# 在相同位置添加新图片{{$image}},同时设置图片尺寸left = shape.lefttop = shape.topwidth = shape.widthheight = shape.heightslide.shapes.add_picture(new_image_path, left, top, width, height)# 保存修改后的PPT文件
prs.save('new_ppt.pptx')
  • 执行后的效果

在这里插入图片描述

3. 生成表格

  • 定义一个表格,并设置表格的名称{{$table}},表格只包含表头,根据提供的数据动态追加行并填充数据
  • 点击选择窗格,选择ppt中的表格,设置表格名称{{$table}}

在这里插入图片描述

  • 具体实现
from pptx import Presentation
from copy import deepcopy# 找出表格
def find_table_by_identifier(slide, identifier):for shape in slide.shapes:if shape.has_table and shape.name == identifier:return shape.tablereturn None# 增加表格行
def add_row_to_table(table):# 复制最后一行new_row = deepcopy(table._tbl.tr_lst[-1])# 添加新行到表格table._tbl.append(new_row)# 添加数据
def add_data_to_table(table, data):# 计算数据有多少条,增加相应数量的表格行rows_to_add = len(data)# 动态增加行for _ in range(rows_to_add):add_row_to_table(table)# 填充数据for i, row_data in enumerate(data):for j, cell_content in enumerate(row_data):cell_text = str(cell_content)table.cell(i + 1, j).text = cell_text# 示例数据
data = [["张三", 28, "北京"],["李四", 22, "上海"],["王五", 35, "广州"]
]# 使用函数
ppt_path = 'table.pptx'
save_path = 'new_table.pptx'
prs = Presentation(ppt_path)# 遍历每一张幻灯片寻找名称为{{$table}}的表格
for slide in prs.slides:table = find_table_by_identifier(slide, "{{$table}}")if table is not None:add_data_to_table(table, data)prs.save(save_path)
  • 执行后的效果

在这里插入图片描述

相关文章:

  • Spark中Maven的用法
  • 如何查看自己抖音的IP属地?详细教程及如何修改
  • Chromium 134 编译指南 macOS篇:安装 Xcode(二)
  • scikit-learn初探
  • 巧记英语四级单词 Unit4-中【晓艳老师版】
  • RagFlow本地部署教程 :多模态检索+动态生成,用AI重构企业知识生产力
  • 软件架构设计:MVC、MVP、MVVM、RIA 四大风格优劣剖析
  • reactive 解构赋值给 ref
  • MVCC详细介绍及面试题
  • 1.Framer Motion 中 motion/react 和 motion/react-client 的用法和区别
  • A009-基于pytest的网易云自动化测试
  • react-07React提交表单数据调用同一方法(高阶函数,函数柯里化概念)
  • 浅析基于单片机的数字时钟与温度显示系统的设计
  • 50kN载重汽车轮胎高速耐久试验机
  • 【Linux】基础 IO(文件描述符、重定向、缓冲区)
  • Rust泛型与特性
  • 【数据结构】之散列
  • Xtuner微调大模型
  • 同济大学轻量化低成本具身导航!COSMO:基于选择性记忆组合的低开销视觉语言导航
  • Ubuntu系统18.04更新驱动解决方法
  • 乌美签署矿产协议
  • 金砖国家外长会晤落幕,外交部:发出了反对单边霸凌行径的“金砖声音”
  • 王毅会见俄罗斯外长拉夫罗夫
  • 北汽蓝谷一季度净亏损9.5亿元,拟定增募资不超60亿元
  • 深一度|“凑合过”的利物浦,英超第二冠只求性价比
  • 视觉周刊|2025上海车展的科技范