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

Python读取Excel批量写入到PPT生成词卡

一、问题的提出

有网友想把Excel表中的三列数据,分别是:单词、音标和释义分别写入到PPT当中,每一张PPT写一个单词的内容。这种批量操作是python的强项,尤其是在办公领域,它能较好地解放双手,读取Excel表后,批量写入到PPT的模板中。

词卡

二、分析问题

生成词卡过程中要用到读取Excel的openpyxl模块,以及写入PPT用到的python-pptx模块。先读取单词表,然后把每一行数据存到一个data列表当中,然后利用pptx模块构建对象,获取ppt模板中的第一张幻灯片,以及其母板中的第一个版本。接着遍历data列表,通过添加slide,写入三个占位符中单词、音标和释义等三列数据,最后再保存为单词卡pptx文件。

在编写代码前要先在cmd下安装这两个模块,代码是:

pip install openpyxl, python-pptx

三、解决问题

1. 准备PPT母版

根据以上分析,我们先把PPT模板准备好,在其中的母板上,找到第一个版式,自上而下插入三个占位符,此时还可以设置动画、颜色、字体等格式信息,然后保存。

母版样式

2. 准备单词表

准备好一张Excel表,放入我们准备好的单词表,命名为单词表.xlsx,此表可以有表头,也可以没有表头,为读取和写入数据做准备

Excel数据

3. 写入代码

根据以上分析,我们编写出以下代码:

# 导入必要库
import os
from pptx import Presentation
from openpyxl import load_workbook

# 读取 Excel 数据
try:
    wb = load_workbook(r"单词表.xlsx")
    sheet = wb.active  # 默认读取第一个工作表
except FileNotFoundError:
    raise FileNotFoundError("文件 '单词表1.xlsx' 未找到。")

# 检查是否有数据
if sheet.max_row < 1:
    raise ValueError("Excel 文件中没有有效的数据行。")

# 将数据按行存储为列表
data = []
for row in sheet.iter_rows(min_row=1, values_only=True):  # 从第1行开始读取数据
    data.append(row)

print(data)

# 读取母版文件构建 PPT 的对象
try:
    my_ppt = Presentation(r"单词模板.pptx")
except FileNotFoundError:
    raise FileNotFoundError("文件 '单词模板.pptx' 未找到。")

# 模板中的第一张幻灯片
sld = my_ppt.slides[0]

if sld.shapes[0].has_text_frame:
    tf = sld.shapes[0].text_frame
    tf.text = "词卡内容"

# 获取母版所有幻灯片布局
layout = my_ppt.slide_layouts

# 遍历所有数据
for row in data:
    # 创建新幻灯片
    slide = my_ppt.slides.add_slide(layout[0])
    # 当前幻灯片中的占位符
    placeholders = slide.shapes.placeholders
    for i, pl in enumerate(placeholders,1):
        if i < len(row):  # 确保占位符对应的数据存在
            pl.text = str(row[i]) if row[i] is not None else ""
        else:
            pl.text = ""  # 如果数据不足,设置为空字符串

# 保存最终生成的 PPT
my_ppt.save("单词卡.pptx")

四、注意事项

1. 注意路径为当前路径,生成文件时,一定要保持模板、Excel表都处在关闭的状态当中。

2. 注意模板中第一个版式要插入三个占位符,而不是文本框。


http://www.kler.cn/a/444880.html

相关文章:

  • LeetCode每日三题(六)数组
  • mysql建立主从集群
  • 【VulnOSv2靶场渗透】
  • WOFOST作物模型(3):(本地化校准)优化PCSE模型中的参数
  • Pyside6 在 pycharm 中的配置
  • CSS面试题|[2024-12-24]
  • 配置免密登陆服务器
  • python快速接入阿里云百炼大模型
  • 【数据分析】数据分析流程优化:从数据采集到可视化的全面指南
  • 一篇文章理解前端的请求头和响应头含义
  • 打 印 菱 形
  • Gartner发布2025年网络安全主要趋势:实现转型和嵌入弹性两大主题下的9个趋势
  • Linux性能监控命令_nmon 安装与使用以及生成分析Excel图表
  • 基于注意力机制的ResNet优化算法(三种注意力机制+源码+pytorch)
  • 4、交换机IP接口功能
  • git 删除鉴权缓存及账号信息
  • 基于时间情境创造与 AI 智能名片 S2B2C 商城小程序源码的零售创新策略研究
  • 从零开始学习HTML5
  • 【Linux】文件IO--read/write/缓冲区(详)
  • 防火墙规则配置错误导致的网络问题排查
  • 用C#(.NET8)开发一个NTP(SNTP)服务
  • windwos defender实现白名单效果(除了指定应用或端口其它一律禁止)禁止服务器上网
  • pycharm debug
  • 网络安全概论——入侵检测系统IDS
  • 使用python的模块cryptography对文件加密
  • PostgreSQL:pg_stat_statements