Creating and updating PowerPoint Presentations in Python using python – pptx

python-pptx is library used to create/edit a PowerPoint (.pptx) files. This won’t work on MS office 2003 and previous versions.  We can add shapes, paragraphs, texts and slides and much more thing using this library.

Installation: Open the command prompt on your system and write given below command:

pip install python-pptx

Let’s see some of its usage:

Example 1: Creating new PowerPoint file with title and subtitle slide.

Python3



filter_none

edit
close

play_arrow

link
brightness_4
code

# import Presentation class
# from pptx library
from pptx import Presentation     
  
# Creating presentation object
root = Presentation()
  
# Creating slide layout
first_slide_layout = root.slide_layouts[0
  
""" Ref for slide types: 
0 ->  title and subtitle
1 ->  title and content
2 ->  section header
3 ->  two content
4 ->  Comparison
5 ->  Title only 
6 ->  Blank
7 ->  Content with caption
8 ->  Pic with caption
"""
  
# Creating slide object to add 
# in ppt i.e. Attaching slides 
# with Presentation i.e. ppt
slide = root.slides.add_slide(first_slide_layout)
  
# Adding title and subtitle in 
# slide i.e. first page of slide 
slide.shapes.title.text = " Created By python-pptx"
  
# We have different formats of 
# subtitles in ppts, for simple
# subtitle this method should 
# implemented, you can change
# 0 to 1 for different design
slide.placeholders[1].text = " This is 2nd way"
  
# Saving file
root.save("Output.pptx")
  
print("done")

chevron_right


Output:

Adding title and subtitle to the powerpoint

Example 2: Adding Text-Box in PowerPoint.

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# import required things
from pptx import Presentation 
from pptx.util import Inches, Pt
  
# Creating Object
ppt = Presentation() 
  
# To create blank slide layout
# We have to use 6 as an argument
# of slide_layouts  
blank_slide_layout = ppt.slide_layouts[6
  
# Attaching slide obj to slide
slide = ppt.slides.add_slide(blank_slide_layout)
  
# For adjusting the  Margins in inches 
left = top = width = height = Inches(1
  
# creating textBox
txBox = slide.shapes.add_textbox(left, top,
                                 width, height)
  
# creating textFrames
tf = txBox.text_frame
tf.text = "This is text inside a textbox"
  
# adding Paragraphs
p = tf.add_paragraph() 
  
# adding text
p.text = "This is a second paragraph that's bold and italic" 
  
# font 
p.font.bold = True
p.font.italic = True
  
p = tf.add_paragraph()
p.text = "This is a third paragraph that's big " 
p.font.size = Pt(40)
  
# save file
ppt.save('test_2.pptx')
  
print("done")

chevron_right


Output:

Adding text box to the powerpoint

Example 3: PowerPoint (.pptx) file to Text (.txt) file conversion.

Python3



filter_none

edit
close

play_arrow

link
brightness_4
code

# import Presentation class
# from pptx library
from pptx import Presentation
  
# creating an object
ppt = Presentation("sample.pptx")
  
# open file in write mode
File_to_write_data = open("File_To_Extract_ppt.txt", "w")
  
# write text from powerpoint
# file into .txt file
for slide in ppt.slides: 
    for shape in slide.shapes: 
        if not shape.has_text_frame: 
            continue 
        for paragraph in shape.text_frame.paragraphs: 
            for run in paragraph.runs: 
                File_to_write_data.write(run.text)
  
# close the file               
File_to_write_data.close()
  
print("Done")

chevron_right


Output:

Example 4: Inserting image into the PowerPoint file.

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

from pptx import Presentation 
from pptx.util import Inches 
  
# Giving Image path 
img_path = 'bg_bg.png' 
  
# Creating an Presentation object
ppt = Presentation() 
  
# Selecting blank slide
blank_slide_layout = ppt.slide_layouts[6
  
# Attaching slide to ppt
slide = ppt.slides.add_slide(blank_slide_layout) 
  
# For margins
left = top = Inches(1
  
# adding images
pic = slide.shapes.add_picture(img_path,
                               left, top)
  
left = Inches(1
height = Inches(1
  
pic = slide.shapes.add_picture(img_path, left,
                               top, height = height)
# save file
ppt.save('test_4.pptx')
  
print("Done")

chevron_right


Output:

Adding images to the powerpoint

Example 5: Adding Charts to the PowerPoint file.

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# import required classes/functions/method
from pptx import Presentation 
from pptx.chart.data import CategoryChartData 
from pptx.enum.chart import XL_CHART_TYPE 
from pptx.util import Inches
  
  
# Create presentation object
ppt = Presentation() 
  
# Adding slide with specific layout
slide = ppt.slides.add_slide(ppt.slide_layouts[6])
  
# Define chart data 
# Creating object of chart
chart_data = CategoryChartData() 
  
# Adding categories to chart
chart_data.categories = ['East', 'West', 'Midwest']  
  
# Adding series
chart_data.add_series('Series 1'
                      (int(input("Enter Value:")), 
                        int(input("Enter Value:")),
                        int(input("Enter Value:")))) 
  
x, y, cx, cy = Inches(2), Inches(2), Inches(6), Inches(4.5
  
slide.shapes.add_chart( XL_CHART_TYPE.COLUMN_CLUSTERED, x,
                       y, cx, cy, chart_data )
  
# Saving file
ppt.save('chart-Tutorial.pptx')
  
print("done")

chevron_right


Output:

Adding charts to the powerpoint

Example 6: Adding tables to the PowerPoint file.

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# importing
from pptx import Presentation 
from pptx.util import Inches
  
# create a Presentation object
ppt = Presentation() 
  
# Adding a blank slide in out ppt
slide = ppt.slides.add_slide(ppt.slide_layouts[6])
  
# Adjusting the width !  
x, y, cx, cy = Inches(2), Inches(2), Inches(4), Inches(1.5
  
# Adding tables
shape = slide.shapes.add_table(3, 4, x, 
                               y, cx, cy)
  
# Saving the file
ppt.save("Tabel_Tutorial.pptx")
  
print("done")

chevron_right


Output:

Adding table to the powerpoint




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :

3


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.