python实现批量生成会议台卡(pyQt5)

`# 导入所需库
from pptx import Presentation
from pptx.enum.text import PP_ALIGN
from pptx.util import Pt
import pandas as pd # 新增导入pandas库
from PyQt5 import QtWidgets # 新增导入PyQt5库

创建应用程序

app = QtWidgets.QApplication([])

输入数字

num_copies = 1 # 直接设置为1,去掉输入对话框

读取模板PPT和Excel文件

template_ppt = Presentation(QtWidgets.QFileDialog.getOpenFileName(None, "选择模板PPT", "", "PPTX Files (.pptx)")[0]) # 选择模板PPT
excel_file = QtWidgets.QFileDialog.getOpenFileName(None, "选择Excel文件", "", "Excel Files (
.xlsx)")[0] # 选择Excel文件
excel_data = pd.read_excel(excel_file) # 读取Excel文件

复制第一页

first_slide = template_ppt.slides[0]
num_rows = len(excel_data) # 获取Excel数据的行数
for i in range(min(int(num_copies), num_rows)): # 确保不超过行数
# 创建新幻灯片并复制内容
new_slide = template_ppt.slides.add_slide(first_slide.slide_layout)
for shape in first_slide.shapes:
if shape.has_text_frame:
new_shape = new_slide.shapes.add_textbox(shape.left, shape.top, shape.width, shape.height)
new_shape.text = str(excel_data.iloc[i, 0]) # 使用Excel中每个单元格的文本

        # 设置文本框文字居中,字体为微软雅黑,大小为120text_frame = new_shape.text_framefor paragraph in text_frame.paragraphs:paragraph.alignment = PP_ALIGN.CENTER  # 文本居中for run in text_frame.paragraphs[0].runs:run.font.name = '微软雅黑'  # 设置字体run.font.size = Pt(120)  # 设置字体大小run.font.bold = True  # 设置字体加粗# {{ edit_1 }} 旋转第一个文本框180度
if new_slide.shapes:  # 确保新幻灯片有形状new_slide.shapes[1].rotation = 180  # 旋转第一个文本框180度

保存新的PPT

output_file, _ = QtWidgets.QFileDialog.getSaveFileName(None, "另存为", "output.pptx", "PPTX Files (*.pptx)") # 选择保存路径
if output_file: # 确保用户选择了文件名
template_ppt.save(output_file) # 保存为用户指定的文件名
`

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/799608.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈舞蹈链(DLX)

名字: \(DL\),\(Dancing\space Link\),舞蹈链,是由\(Donald\space Knuth\)提出的数据结构,用来优化 \(X\) 算法,所以叫\(DLX\) \(X\)算法详解 用于求解精确覆盖问题,精确覆盖问题的定义:给定一个由0-1组成的矩阵,是否能找到一个行的集合,使得集合中每一列都恰好包含一…

java基础 -IO流笔记

610,文件的基础知识 文件流 输入流和输出流都是相对 java程序内存 而言611,创建文件 在D盘下创建文件。package com.hspedu.file;import org.junit.jupiter.api.Test; import java.io.File; import java.io.IOException;//演示创建文件 public class FileCreate {public sta…

2024软件工程个人作业(第二次)

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13253这个作业的目标 学会使用aigc编写学习代码,明白aigc能做哪些不能做哪些学号 1022014251. 项目展示 1.1. GitHub 仓库链接 ruang…

Kubernetes Ingress

目录一、为什么需要 Ingress二、什么是Ingress,Ingress Controller三、Ingress 的工作原理四、Ingress 配置资源模版五、实例1、搭建 Ingress 环境1.1、Ingress-Nginx官网地址1.2、master 节点下载 deploy.yaml1.3、所有节点提前 pull 必须的镜像1.4、修改并应用 deploy.yaml 文…

JVM--解析运行期优化与JIT编译器

JVM开发团队一直在努力,缩小Java与C/C++语言在运行效率上的差距。 本篇博客,我们来谈一谈JVM(HotSpot)为了提高Java程序的运行效率,都实现了哪些激动人心的技术~ 1 JIT编译器的引入 首先我们这篇文章中所说的编译器都是指JVM的组成部分之一---即时编译器(JIT),与生成J…

十七,Spring Boot 整合 MyBatis 的详细步骤(两种方式)

十七,Spring Boot 整合 MyBatis 的详细步骤(两种方式) @目录十七,Spring Boot 整合 MyBatis 的详细步骤(两种方式)1. Spring Boot 配置 MyBatis 的详细步骤2. 最后:MyBatis 的官方文档:https://mybatis.p2hp.com/ 关于 MyBatis 的学习的详细内容,大家可以移步至:✏️✏️…

学习高校课程-软件工程-软件流程(ch3)

3.1 A GENERIC PROCESS MODEL 通用过程模型 线性流和迭代流演化流和并行流3.2 DEFINING A FRAMEWORK ACTIVITY 定义框架活动 What actions are appropriate for a framework activity, given the nature of the problem to be solved, the characteristics of the people doing…

字符编码发展史2 — ISO-8859-N

2.2. 第二个阶段 本地化2.2.1. ANSI 2.2.2. ISO/IEC 8859-N2.2.2.1. 什么是ISO/IEC 8859-N? 2.2.2.2. ISO 8859-1的编码表上一篇《字符编码发展史1 — ASCII和EASCII》我们讲解了字符编码的起源ASCII和EASCII。本篇我们将继续讲解字符编码的第二个发展阶段中的ISO 8859-N。 2.…

?

CF1194G 在外层枚举\(x\)和\(y\),令\(x=x\times t,y=y\times t\),且\(x\times t\)十进制包含\(x\),\(y\)同理。 因为有进位,从低位向高位dp。 设\(f[T][0/1][0/1][i][j][0/1][0/1]\)表示处理到第T位,在当前这些为中\(x\times t\)是否大于\(n\),\(y\times t\)是否大于\(n\),…

网络补充

1. 网卡配置(ip,dns)目标:修改网卡的名字为eth0. 修改网卡配置文件,ip,dns,网关,子网掩码.(物理机,虚拟机(私有云)) 公有云自动获取即可,服务器数量巨大自动获取.1.1 网卡命名 结论: 工作有需求的时候再去修改. 做好记录,后面使用的时候参考即可. # 网卡命名规则: ens33 ensxxx…