python-pptx用法

发布时间 2023-04-22 14:40:29作者: linux星

from pptx import Presentation
# 创建一个新PPT文档
prs = Presentation()
# 添加幻灯片
slide = prs.slides.add_slide(prs.slide_layouts[0])
# 保存PPT文档
prs.save('example.pptx')

from pptx.util import Inches
# 添加文本框
slide = prs.slides.add_slide(prs.slide_layouts[1])
textbox = slide.shapes.add_textbox(Inches(1), Inches(1), Inches(6), Inches(2))
# 设置文本框内容和样式
textbox.text = 'Hello World!'
textbox.fill.solid()
textbox.fill.fore_color.rgb = RGBColor(255, 0, 0)
textbox.text_frame.paragraphs[0].font.size = Pt(24)

from pptx.util import Inches
# 添加图片
slide = prs.slides.add_slide(prs.slide_layouts[1])
picture = slide.shapes.add_picture('image.jpg', Inches(1), Inches(1), Inches(6), Inches(4.5))
# 设置图片样式
picture.rotation = 45
picture.crop_left = 0.1
picture.crop_right = 0.1
picture.crop_top = 0.1
picture.crop_bottom = 0.1

from pptx.util import Inches
# 添加表格
slide = prs.slides.add_slide(prs.slide_layouts[5])
table = slide.shapes.add_table(rows=2, cols=2, left=Inches(1), top=Inches(2), width=Inches(6), height=Inches(1.5))
# 设置表格样式
table.table.cell(0, 0).text = 'Name'
table.table.cell(0, 1).text = 'Age'
table.table.cell(1, 0).text = 'John'
table.table.cell(1, 1).text = '30'
for i in range(2):
    for j in range(2):
        cell = table.table.cell(i, j)
        cell.text_frame.paragraphs[0].font.name = 'Calibri'
        cell.text_frame.paragraphs[0].font.size = Pt(12)
        cell.text_frame.paragraphs[0].font.bold = True
        cell.fill.solid()
        cell.fill.fore_color.rgb = RGBColor(255, 255, 255)
        cell.fill.background()
        cell.vertical_anchor = MSO_ANCHOR.MIDDLE
        cell.text_frame.paragraphs[0].alignment = PP_ALIGN.CENTER

from pptx.chart.data import ChartData
from pptx.enum.chart import XL_CHART_TYPE
from pptx.util import Inches
# 添加图表
slide = prs.slides.add_slide(prs.slide_layouts[5])
chart_data = ChartData()
chart_data.categories = ['East', 'West', 'South', 'North']
chart_data.add_series('Series 1', (19.5, 21.4, 16.7, 19.3))
chart = slide.shapes.add_chart(XL_CHART_TYPE.COLUMN_CLUSTERED, Inches(1), Inches(2), Inches(6), Inches(4.5), chart_data).chart
# 设置图表样式
plot = chart.plots[0]
plot.has_data_labels = True
plot.data_labels.font.size = Pt(12)
plot.data_labels.font.name = 'Calibri'
plot.data_labels.font.color.rgb = RGBColor(255, 255, 255)
chart.chart_title.text_frame.text = 'Chart Title'
chart.chart_title.text_frame.paragraphs[0].font.size = Pt(16)
chart.chart_title.text_frame.paragraphs[0].font.bold = True
chart.chart_title.text_frame.paragraphs[0].font.name = 'Calibri'
chart.has_legend = False

from pptx import Presentation
from pptx.util import Inches
# 创建一个新PPT文档
prs = Presentation()
# 添加幻灯片
slide = prs.slides.add_slide(prs.slide_layouts[1])
# 添加文本框和超链接
textbox = slide.shapes.add_textbox(Inches(1), Inches(1), Inches(6), Inches(2))
textbox.text_frame.text = 'Click here to visit Google'
textbox.text_frame.paragraphs[0].font.size = Pt(24)
textbox.text_frame.paragraphs[0].font.underline = True
textbox.text_frame.paragraphs[0].font.color.rgb = RGBColor(0, 0, 255)
hyperlink = textbox.text_frame.paragraphs[0].add_hyperlink('http://www.google.com')

from pptx import Presentation
# 创建一个新PPT文档
prs = Presentation()
# 添加第一个幻灯片
slide1 = prs.slides.add_slide(prs.slide_layouts[0])
slide1.shapes.title.text = 'Slide 1'
# 设置第一个幻灯片的转场效果
slide1.transition.transition_type = PP_TRANSITION_TYPE.FADE
# 添加第二个幻灯片
slide2 = prs.slides.add_slide(prs.slide_layouts[1])
slide2.shapes.title.text = 'Slide 2'
# 设置第二个幻灯片的转场效果
slide2.transition.transition_type = PP_TRANSITION_TYPE.CUT
# 添加第三个幻灯片
slide3 = prs.slides.add_slide(prs.slide_layouts[2])
slide3.shapes.title.text = 'Slide 3'
# 设置第三个幻灯片的转场效果
slide3.transition.transition_type = PP_TRANSITION_TYPE.DISSOLVE
# 添加动画
shape = slide3.shapes.add_shape(MSO_SHAPE.RECTANGLE, Inches(1), Inches(1), Inches(2), Inches(1))
animation = shape.animations.add_animation(MSO_ANIMATION.APPEAR)
animation.effect_timing.trigger_delay = 0
animation.effect_timing.trigger_type = MSO_ANIMATION_TRIGGER.ON_CLICK
prs.save('example.pptx')

8.读取PPT文档和内容

```python from pptx import Presentation

读取PPT文档

prs = Presentation('example.pptx')

读取幻灯片数量

print('Number of slides:', len(prs.slides))

读取幻灯片标题

for slide in prs.slides:

  print(slide.shapes.title.text)

读取文本框内容

for slide in prs.slides:

   for shape in slide.shapes:

    if shape.has_text_frame:

      print(shape.text)