在当今的商业环境中,PowerPoint演示是展示和传递信息的常用方式。然而,手动将大量图像插入到幻灯片中往往是一项乏味且耗时的工作。但是,通过Python编程,我们可以轻松自动化这个过程,节省时间和精力。
C:\pythoncode\new\folderTOppt.py
在本文中,我将介绍如何使用Python、wxPython和python-pptx库编写一个脚本,将指定文件夹中的所有PNG图像逐一插入到一个新的PowerPoint演示文稿中,每张图像占据一个全尺寸幻灯片。无需手动操作,只需运行这个脚本,就可以快速生成包含所有PNG图像的演示文稿。
第一步:安装所需的Python库
要运行此脚本,我们需要安装以下Python库:
-
wxPython: 用于创建图形用户界面(GUI),让用户选择图像文件夹。
-
python-pptx: 用于创建和操作PowerPoint演示文稿。
您可以使用Python的包管理器pip来安装这些库:
bash
pip install wxpython python-pptx
第二步:编写Python脚本
以下是完整的Python脚本代码:
python
import wx
import os
import pptx
from pptx.util import Inches, Pt
# 创建wxPython应用程序
app = wx.App()
# 创建文件夹选择对话框
dialog = wx.DirDialog(None, "选择文件夹", style=wx.DD_DEFAULT_STYLE)
if dialog.ShowModal() == wx.ID_OK:
folder_path = dialog.GetPath()
else:
print("未选择有效的文件夹")
exit()
dialog.Destroy()
# 创建新的PowerPoint演示文稿
ppt = pptx.Presentation()
# 获取幻灯片的宽度和高度
slide_width = int(ppt.slide_width.inches * 914400) # 将英寸转换为pptx单位
slide_height = int(ppt.slide_height.inches * 914400) # 将英寸转换为pptx单位
# 遍历文件夹中的所有PNG文件
for filename in os.listdir(folder_path):
if filename.endswith(".png"):
# 获取图像文件路径
image_path = os.path.join(folder_path, filename)
# 创建新的幻灯片
slide = ppt.slides.add_slide(ppt.slide_layouts[6]) # 使用空白布局
# 在幻灯片中添加图像
picture = slide.shapes.add_picture(image_path, Inches(0), Inches(0), height=slide_height)
# 计算等比例缩放后的图像大小
picture_width = picture.width
picture_height = picture.height
max_picture_width = slide_width - int(Inches(1).inches * 914400) # 减去1英寸边距
max_picture_height = slide_height - int(Inches(1).inches * 914400) # 减去1英寸边距
scale_ratio = min(max_picture_width / picture_width, max_picture_height / picture_height)
new_picture_width = int(picture_width * scale_ratio)
new_picture_height = int(picture_height * scale_ratio)
# 设置图像的大小和位置
picture.left = (slide_width - new_picture_width) // 2
picture.top = (slide_height - new_picture_height) // 2
picture.width = new_picture_width
picture.height = new_picture_height
# 保存PowerPoint演示文稿
save_dialog = wx.FileDialog(None, "保存PowerPoint文件", wildcard="PowerPoint文件 (*.pptx)|*.pptx", style=wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT)
if save_dialog.ShowModal() == wx.ID_OK:
ppt_file_path = save_dialog.GetPath()
ppt.save(ppt_file_path)
else:
print("未选择有效的保存路径")
save_dialog.Destroy()
让我们逐步解释这段代码:
-
首先,我们导入所需的Python库:wxPython用于创建GUI,os用于文件操作,pptx用于创建和操作PowerPoint文件。
-
然后,我们创建一个wxPython应用程序和一个文件夹选择对话框,让用户选择包含PNG图像的文件夹。
-
接下来,我们创建一个新的PowerPoint演示文稿,并获取幻灯片的宽度和高度(以pptx单位表示)。
-
我们遍历选定文件夹中的所有PNG文件。对于每个PNG文件:
-
我们创建一个新的幻灯片,使用空白布局。
-
我们在幻灯片中添加该PNG图像,并根据图像的宽高比,按等比例缩放图像以适应幻灯片大小,同时保留1英寸的边距。
-
我们将缩放后的图像居中显示在幻灯片上。
- 最后,我们打开另一个文件对话框,让用户选择保存PowerPoint文件的位置,并将演示文稿保存到指定位置。
就是这样!通过运行这个Python脚本,您可以轻松地将一个文件夹中的所有PNG图像插入到一个新的PowerPoint演示文稿中,每张图像占据一个全尺寸幻灯片。这不仅节省了大量时间,而且确保了所有图像的一致性和专业外观。
无论您是需要准备产品演示、培训材料还是图片集锦,这个脚本都将为您提供极大的便利。尝试一下吧,让Python释放您的工作效率!