2003版的PowerPoint的文件格式是ppt,而在07以后的版本均为pptx,所以说这都是指一般的PPT文件。
ppt格式的PPT各版本的PowerPoint均可以打开,但pptx一般情况下只能用07以后的版本打开,除此以外,也可以通过下载安装官方提供的兼容包,来使得我们的03版可以打开pptx文件,再或者把pptx格式改为ppt格式,改写方法可以在高版本软件中进行另存为ppt格式的,粗暴一点的可以直接把文件的后缀改成ppt,还可以使用在线工具(如office-converter)。
window系统下python操作后缀为ppt的文件,采用win32com来实现,具体如下:
1.示例代码
import win32com
from win32com.client import Dispatch, constants
ppt = win32com.client.Dispatch('PowerPoint.Application')
ppt.Visible = 1
pptSel = ppt.Presentations.Open("C:\\web\\phpStudy\\WWW\\ppt\\Russia\\1.pptx")
# win32com.client.gencache.EnsureDispatch('PowerPoint.Application')
#get the ppt's pages
slide_count = pptSel.Slides.Count
for i in range(1,slide_count + 1):
shape_count = pptSel.Slides(i).Shapes.Count
print shape_count
for j in range(1,shape_count + 1):
if pptSel.Slides(i).Shapes(j).HasTextFrame:
s = pptSel.Slides(i).Shapes(j).TextFrame.TextRange.Text
print (s.encode('utf-8')+ "\n")
ppt.Quit()
而操作pptx文件,python有专门的包python-pptx,具体如下:
1.python-pptx官方文档
python-pptx — python-pptx 0.6.21 documentation
2.python-pptx安装
pip install python-pptx
3.示例代码
import pptx
from pptx import Presentation
prs = Presentation("统计学习方法PPT.pptx")
for i,slide in enumerate(prs.slides):
if i == 5:
for shape in slide.shapes:
if shape.has_text_frame:
text_frame = shape.text_frame
for paragraph in text_frame.paragraphs:
print(paragraph.text)
"""
注意:该方法和上述4)中的方法一摸一样。上述方法是直接获取Shpae中的文字内容;
下面这个更灵活,先获取每个Shape,然后在获取每个Shape中的paragraph;
下面方式更好:因为我们可以针对paragraph,写一个判断条件,只获取第几个paragraph;
4.关于pptx的更详细介绍