python合并多个PPT文件到 文档\演示文稿1.pptx

发布时间 2023-04-08 23:53:40作者: 大话人生
# encoding=utf8
#-*-coding:utf-8 -*-

#pip install python-pptx -i https://pypi.tuna.tsinghua.edu.cn/simple
#pip install python-docx -i https://pypi.tuna.tsinghua.edu.cn/simple
#pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple

# pip install --upgrade python-pptx -i https://pypi.tuna.tsinghua.edu.cn/simple

import os
import re
import win32com.client as win32
from pptx import Presentation

def find(s):
    pat = re.compile(r"\d+")
    result = pat.match(s)
    return int(result.group(0))

def join_ppt(path:str):
    """
    :param path: ppt所在文件路径
    :return: None
    """
    files = os.listdir(path)
    files.sort(key = find)

    Application = win32.gencache.EnsureDispatch("PowerPoint.Application")

    abs_path = os.path.join(path, files[0])
    exit_ppt = Application.Presentations.Open(abs_path)


    Application.Visible = 1   #表示应用要先打开
    new_ppt = Application.Presentations.Add()

    #执行合并操作
    for file in files:
        abs_path = os.path.join(path, file)
        exit_ppt = Application.Presentations.Open(abs_path)
        print('正在操作的文件:', abs_path)
        page_num = exit_ppt.Slides.Count
        exit_ppt.Close()
        new_ppt.Slides.InsertFromFile(abs_path, new_ppt.Slides.Count, 1, page_num)
    new_ppt.Save()  # 括号内为保存位置:如C:\Users\Administrator\Documents\下
    print("组合的PPT已经生成,请手动保存新生成的PPT文件")
    Application.Quit()  #退出PPT应用,此处注释掉,为了可以手动查看生成的文件保存的位置

hebing_ppt_mulu = r"D:\PycharmProjects\xiaoxiaomu\制作PPT\49\ppt\newPPt"  #所有需要合并PPT的路径(把所有需要合并的PPT都放到通过一个目录下, 且保证目录下仅有需要合并的PPT文件)
print("请保证 hebing_ppt_mulu 变量 路径下只有PPT文件")
join_ppt(hebing_ppt_mulu)
print("我的新生成的合并文件为:文档\演示文稿1.pptx,你可以注释掉Application.Quit(),然后手动查看你自己的合并文件的位置")