Python读取PPT,PPT PPTX PPTM PPS PPSM PPSX

语言:python3

windows环境方法

import json
from win32com import client as wc

def Read_PPTX(file):  #PPT PPTX PPTM PPS PPSM PPSX
    ppt = wc.Dispatch('PowerPoint.Application')
    ppt.Visible = 0
    pptSel = ppt.Presentations.Open(file)
    slide_count = pptSel.Slides.Count
    name = ['page', 'content']
    results = []
    for i in range(1, slide_count + 1):
        result = {}
        result[name[0]] = i
        content = []
        shape_count = pptSel.Slides(i).Shapes.Count
        for j in range(1, shape_count + 1):
            if pptSel.Slides(i).Shapes(j).HasTextFrame:
                net = pptSel.Slides(i).Shapes(j).TextFrame.TextRange.Text.strip()
                content.append(net)
        result[name[1]] = content
        results.append(result)
    ppt.Quit()
    jas = json.dumps(results, ensure_ascii=False, indent=4)
    result = ''
    for item in json.loads(jas):
        result = result + str(item['content']).replace(r'\r','')
    return result


if __name__ == '__main__':
    path = r'******\测试.pptm'
    j = Read_PPTX(path)
    print(j.encode('GBK', 'ignore').decode('GBK'))

优点:任意类型PPT皆可读取

缺点:反应迟钝,需要windows支持,还会弹出打开窗口

不依赖windows方法

import pptx

def read_PPTX(file_path):  #pptx,pptm,
    presentation = pptx.Presentation(file_path)
    results = ''
    for slide in presentation.slides:
        for shape in slide.shapes:
            if shape.has_text_frame:
                for paragraph in shape.text_frame.paragraphs:
                    for run in paragraph.runs:
                        results = results + run.text
    return results.encode('GBK', 'ignore').decode('GBK')

file_path = r'****\测试.pptx'
print(read_PPTX(file_path))

安装包下载:

https://files.pythonhosted.org/packages/bf/86/eb979f7b0333ec769041aae36df8b9f1bd8bea5bbad44620663890dce561/python-pptx-0.6.18.tar.gz

解压后cd /d  进入目录,执行命令即可

python setup.py install

优点:毫秒级别读取,不依赖windows环境

缺点:仅支持pptx,pptm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海人001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值