介绍
本文将介绍如何使用openpyxl和pptx库来批量制作PPT奖状。
本文假设你已经安装了python和这两个库。
本文的场景是:一名基层人员,要给一次比赛活动获奖的500名选手制作奖状,并且奖状需要做成PPT在颁奖大会上电子展示,手上有一份名单 list.xlsx 和 PPT 奖状模板 temp.pptx。
准备工作
首先,我们需要导入openpyxl和python-pptx库,以及其他一些辅助库,如下:
import openpyxl from pptx import Presentation from pptx.util import Inches, Pt import os
然后,我们需要定义一些常量,如文件名,字体,颜色等,如下:
# 文件名 EXCEL_FILE = 'list.xlsx' PPT_FILE = 'temp.pptx' OUTPUT_DIR = 'output' # 字体 FONT_NAME = '微软雅黑' FONT_SIZE = 36 FONT_COLOR = 'FFFFFF' # 占位符索引 NAME_INDEX = 0 AWARD_INDEX = 1 DATE_INDEX = 2
接下来,我们需要读取Excel文件,获取获奖者的姓名,奖项,以及日期,如下:
# 读取Excel文件 wb = openpyxl.load_workbook(EXCEL_FILE) ws = wb.active # 获取获奖者列表 awardees = [] for row in ws.iter_rows(min_row=2, values_only=True): name, award, date = row awardees.append((name, award, date))
最后,我们需要创建一个输出目录,用来存放生成的PPT文件,如下:
# 创建输出目录 if not os.path.exists(OUTPUT_DIR): os.mkdir(OUTPUT_DIR)
生成PPT奖状
首先,我们需要加载PPT模板文件,获取幻灯片母版,以及占位符对象,如下:
# 加载PPT模板文件 prs = Presentation(PPT_FILE) # 获取幻灯片母版 slide_layout = prs.slide_layouts[0] # 获取占位符对象 placeholders = slide_layout.placeholders
然后,我们需要遍历获奖者列表,为每个获奖者生成一个PPT奖状,如下:
# 遍历获奖者列表 for name, award, date in awardees: # 生成一个PPT奖状 slide = prs.slides.add_slide(slide_layout) # 填充姓名 name_placeholder = slide.placeholders[NAME_INDEX] name_placeholder.text = name name_placeholder.font.name = FONT_NAME name_placeholder.font.size = Pt(FONT_SIZE) name_placeholder.font.color.rgb = FONT_COLOR # 填充奖项 award_placeholder = slide.placeholders[AWARD_INDEX] award_placeholder.text = award award_placeholder.font.name = FONT_NAME award_placeholder.font.size = Pt(FONT_SIZE) award_placeholder.font.color.rgb = FONT_COLOR # 填充日期 date_placeholder = slide.placeholders[DATE_INDEX] date_placeholder.text = date date_placeholder.font.name = FONT_NAME date_placeholder.font.size = Pt(FONT_SIZE) date_placeholder.font.color.rgb = FONT_COLOR
最后,我们需要保存生成的PPT文件,如下:
# 保存生成的PPT文件 output_file = os.path.join(OUTPUT_DIR, 'awards.pptx') prs.save(output_file)
总结
本文介绍了如何使用openpyxl和python-pptx库来批量制作PPT奖状。
本文通过一个实际的场景,演示了如何读取Excel文件,写入PPT文件,以及使用PPT占位符来填充内容。
原文地址:https://mp.weixin.qq.com/s?__biz=MzkwMDE4NzE5OQ==&mid=2247503049&idx=1&sn=f231bd24cec6d73aede93dd3dda2a17a