Python实现批量合并PPT文件

文章描述了一个用户在寻求批量合并PPT文件时遇到的问题,分享了一个用Python和win32com.client库编写的函数,用于合并指定文件夹内的PPT。作者提到虽然ChatGPT提供了帮助,但仍需结合自身学习和多方参考以避免错误。
摘要由CSDN通过智能技术生成

一、需求

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

二、环境需求

一台Computer

Python环境

Microsoft Office PowerPoint

使用控制台下载需要的库

pip install pywin32

三、编写代码

"""
Author: LeopardRich 2829176648@qq.com
Date: 2023-12-31 18:22:02
Description: Function functionality@实现PPT批量合并功能
Copyright (c) 2023 by LeopardRich 2829176648@qq.com, 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在学习过程中确实帮助很大,但是它也经常犯一些我不太好判断的错误。还是多方参考,然后自己学习,可能比较适合我进步吧!

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值