Python读取Excel批量写入到PPT并生成词卡
作者:PythonFun
这篇文章主要为大家详细介绍了如何使用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. 注意模板中第一个版式要插入三个占位符,而不是文本框。
到此这篇关于Python读取Excel批量写入到PPT并生成词卡的文章就介绍到这了,更多相关Python读取Excel写入PPT内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!