0、需求:比如我有一个data文件,每行有数据为学号和姓名。需要将每行的数据,自动生成为一页PPT。并实现PPT可抽签。
注意:如果你是xls文件,可以创建一个新的xlsx文件,把所需数据复制进去。
一、将excel的每行数据导入为每页PPT
以下是python代码:
注意:需要先安装包。安装命令为:
pip install python-pptx -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
整体的代码为:
import pandas as pd
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.enum.text import PP_ALIGN
# === 1. 读取Excel ===
df = pd.read_excel("./data.xlsx")
# === 2. 创建PPT ===
prs = Presentation()
for i, row in df.iterrows():
# === 3. 添加新幻灯片 ===
slide = prs.slides.add_slide(prs.slide_layouts[6]) # 6 = 空白页
# === 4. 添加标题文本框 ===
left = top = Inches(1)
width = height = Inches(8)
textbox = slide.shapes.add_textbox(left, top, width, height/4)
tf = textbox.text_frame
p = tf.add_paragraph()
p.text = str(row['学号'])
p.font.bold = True
p.font.size = Pt(36)
p.alignment = PP_ALIGN.CENTER
# === 5. 添加正文内容 ===
textbox2 = slide.shapes.add_textbox(left, top + Inches(1.5), width, height)
tf2 = textbox2.text_frame
p2 = tf2.add_paragraph()
p2.text = str(row['姓名'])
p2.font.size = Pt(20)
p2.alignment = PP_ALIGN.LEFT
# === 6. 可选:插入图片 ===
if '图片路径' in df.columns and pd.notna(row['图片路径']):
try:
slide.shapes.add_picture(row['图片路径'], Inches(1), Inches(4), height=Inches(3))
except Exception as e:
print(f"第{i+1}页图片插入失败: {e}")
# === 7. 保存PPT ===
prs.save("output.pptx")
print("✅ PPT 生成完成:output.pptx")
二、将PPT作为可抽签
- 选中所有幻灯片,点击「切换」选项卡,勾选「设置自动换片时间」并设置为0秒。
- 在「幻灯片放映」中的「设置幻灯片放映」中勾选「循环放映,按Esc键终止」
1374

被折叠的 条评论
为什么被折叠?



