Python实现批量合并PPT文件

一、需求

        今天想要批量合并PPT文件,但是网上找到的代码都不能让我满意。ChatGPT写的代码也可能过时还是怎么了,总会使用一些报错的方法,搞得我有点秃头。

二、环境需求

一台Computer

Python环境

Microsoft Office PowerPoint

使用控制台下载需要的库

pip install pywin32

三、编写代码

"""
Author: LeopardRich [email protected]
Date: 2023-12-31 18:22:02
Description: Function functionality@实现PPT批量合并功能
Copyright (c) 2023 by LeopardRich [email protected], All Rights Reserved.
"""
import os
import time
import win32com.client


def merge_ppt_files(folder_path: str, output_file: str) -> None:
    """批量合并folder_path文件加中PPT文件并存至output_file

    Args:
        folder_path (str): PPT文件夹所在的位置
        output_file (str): 输出PPT文件的路径

    Returns:
        None
    """

    # 相关配置
    PowerPoint = win32com.client.Dispatch("PowerPoint.Application")
    PowerPoint.Visible = True
    PowerPoint.DisplayAlerts = 0

    # 获取文件夹下所有pptx或ppt文件
    PPTs = []
    for file in os.listdir(folder_path):
        if os.path.isfile(os.path.join(folder_path, file)) and \
                (file.endswith('.ppt') or file.endswith('.pptx')) and not file.startswith("~$"):
            PPTs.append(os.path.abspath(os.path.join(folder_path, file)))

    # 排个序
    PPTs.sort()

    # 给你一个提示
    print(f"将要合并的顺序是", PPTs)

    # 新文件没有Slides属性好像,所以直接使用第一个PPT文件开头
    header_PPT = PowerPoint.Presentations.Open(PPTs.pop(0))

    for next_PPT_file in PPTs:
        try:
            next_PPT = PowerPoint.Presentations.Open(next_PPT_file)

            # 遍历PPT页面(PPT页面索引好像是从 1 开始的)
            for index in range(1, len(next_PPT.Slides) + 1):
                print(f"当前正在复制{next_PPT_file}:Page{index}")
                next_PPT.Slides(index).Copy()
                header_PPT.Slides.Paste()

                # 休眠一会,不然复制粘贴太快,剪切板会出现报错
                time.sleep(0.25)

            # 关闭后续文件
            next_PPT.Close()
        except Exception as e:
            print(f"无法处理文件 {next_PPT_file}: {e}")
            exit()

    header_PPT.SaveAs(output_file)
    header_PPT.Close()
    PowerPoint.Quit()


if __name__ == '__main__':
    # 替换成你的文件夹路径
    folder_path = r'D:\Desktop'

    # 替换成你想要的输出文件路径
    output_file = r'D:\Desktop\merged.pptx'

    merge_ppt_files(folder_path, output_file)

四、总结

        ChatGPT在学习过程中确实帮助很大,但是它也经常犯一些我不太好判断的错误。还是多方参考,然后自己学习,可能比较适合我进步吧!

你可能感兴趣的:(自制脚本,python,powerpoint)