03 PPT작성
1. 파이썬 가상환경 실행 & 활성화
.venv\Scripts\activate
2. 라이브러리 설치
- 터미널에 아래의 명령어를 입력한다.
pip install python-pptx
- 설치중 아래와 같은 메시지가 뜨면 파이썬을 업데이트 하고 재설치 한다
2-1. python.exe -m pip install --upgrade pip
3. 오피스 테마 레이아웃 적용하기
- app.py
- Terminal
from pptx import Presentation # 라이브러리
from pptx.util import Inches # 사진, 표 등을 그리기 위해
prs = Presentation() # 파워포인트 객체 선언
for i in range(0, 11):
title_slide_layout = prs.slide_layouts[i] # 슬라이드 종류 선택
slide = prs.slides.add_slide(title_slide_layout) # 슬라이드 추가
prs.save('add all slides.pptx')
python app.py- 위의 코드를 실행하면 아래 이미지와 같이 ppt파일이 생성된다.

from pptx import Presentation # 라이브러리
from pptx.util import Inches # 사진, 표 등을 그리기 위해
prs = Presentation() # 파워포인트 객체 선언
for i in range(0, 11):
title_slide_layout = prs.slide_layouts[i] # 슬라이드 종류 선택
slide = prs.slides.add_slide(title_slide_layout) # 슬라이드 추가
prs.save('add all slides.pptx')
python app.py- 위의 코드를 실행하면 아래 이미지와 같이 ppt파일이 생성된다.

4. 응용하기
4.1. 객체선언
- 라이브러리를 import하고, 객체를 선언
from pptx import Presentation # 라이브러리
from pptx.util import Inches # 사진, 표 등을 그리기 위해
prs = Presentation() # 파워포인트 객체 선언
4.2. 제목 슬라이드
- 제목 슬라이드 추가
title_slide_layout = prs.slide_layouts[0] # 0 : 제목 슬라이드에 해당
slide = prs.slides.add_slide(title_slide_layout) # 슬라이드 추가
# 제목 - 제목에 값넣기
title = slide.placeholders[0] # 제목
title.text = "안녕하세요!" # 제목에 값 넣기
# 부제목
subtitle = slide.placeholders[1] # 제목 상자는 placeholders[0], 부제목 상자는 [1]
subtitle.text = "파이썬으로 생성한 PPT!"
# 저장
prs.save('파이썬.pptx')
-
결과 : 파이썬.ppt 파일이 생성되었으며 타이틀이 작성되었다

-
01~02행: prs.slide_layouts[0]에서 0은 제목 슬라이드를 의미하며, 해당 레이아웃을 추가한다.
-
05~06행: 제목 슬라이드의 레이아웃(0)의 경우는 [그림 4-2]에서 알 수 있듯이, 두 가지 placeholder가 있다. 첫 번째는 제목을 의미하며, 두 번째는 부제목을 의미한다. slide.placeholders[0]에서 0은 제목을 의미하며,제목의 값을 “Hello, World!”로 설정한다.
-
09~10행: 두 번째 placeholder는 부제목을 의미하며, 부제목에 “python-pptx was here!” 값을 설정한다.
-
13행: 파일을 저장한다.
4.3. 제목 및 내용 슬라이드
- 열려있는 ppt문서는 닫는다
bullet_slide_layout = prs.slide_layouts[1] # 1 : 제목 및 내용 슬라이드
slide = prs.slides.add_slide(bullet_slide_layout) # 기존에 있던 슬라이드에 추가
# 제목
title_shape = slide.placeholders[0]
title_shape.text = '목차기호 추가한 문'
# 내용
body_shape = slide.placeholders[1]
tf = body_shape.text_frame
tf.text = '목차있는 문단목록'
# 단락 추가
p = tf.add_paragraph()
p.text = '첫번째 목차를 적용한 문단'
p.level = 1 # 1 : 들여쓰기 레벨
# 단락 추가
p = tf.add_paragraph()
p.text = '두번째 목차를 적용한 문단'
p.level = 2 # 2 : 들여쓰기 레벨
# 저장
prs.save('파이썬.pptx')
- 01~02행: prs.slide_layouts[1]에서 1은 제목 및 내용 슬라이드를 의미하며, 해당 레이아웃을 추가한다.
- 05~06행: 제목과 내용 슬라이드의 레이아웃(1)의 경우는 [그림 4-2]에서 알 수 있듯이, 두 가지 placeholder가 있다. 첫 번째는 제목을 의미하며, 두 번째는 내용을 의미한다. slide.placeholders[0]에서 0은 제목을 의미하며, 제목의 값을 ‘Adding a Bullet Slide’로 설정한다.
- 09~11행: 두번째 placeholder는 내용을 의미하며, ‘Find the bullet slide layout’ 값을 설정한다.
- 14~16행: add_paragraph 함수를 호출하여 단락을 추가한다. p.level로 들여쓰기 레벨을 설정할 수 있다.
- 19~21행: add_paragraph 함수를 호출하여 단락을 또 추가한다. 그리고 들여쓰기 레벨을 2로 설정한다.
4.4. 사진 슬라이드
이미지다운로드- 이미지를 내려받아 프로젝트 폴더에 저장한다.
- 새 문서로 작업할때는 라이브러리를 임포트 해야한다.
from pptx import Presentation # 라이브러리
from pptx.util import Inches # 사진, 표 등을 그리기 위해
prs = Presentation() # 파워포인트 객체 선언
- 아래 코드를 작성후 실행한다.
img_path = './1.jpg'
blank_slide_layout = prs.slide_layouts[6] # 6 : 제목/내용이 없는 '빈' 슬라이드
slide = prs.slides.add_slide(blank_slide_layout)
left = top = Inches(1)
width = height = Inches(1)
# width, hegith가 없을 경우 원본 사이즈로
pic = slide.shapes.add_picture(img_path, left, top, width=width,height=height)
left = Inches(3)
width = Inches(5.5)
height = Inches(4)
pic = slide.shapes.add_picture(img_path, left, top, width=width,height=height)
prs.save('이미지.pptx')
- 01행: 슬라이드에 삽입하고 싶은 이미지 파일을 설정한다.
- 03~04행: prs.slide_layouts[6]에서 6은 빈 슬라이드를 의미한다.
- 06~09행: add_picture() 함수를 호출하여 이미지를 추가한다. 이미지의 경우 위치와 크기 설정이 필요하다. top과 left는 시작 위치를 width와 height는 이미지의 크기를 의미한다.
- 11~14행: add_picture() 함수를 호출하여 이미지를 추가하는데, 기존보다 크게 추가한다.
- 완성화면

4.5. 표 슬라이드
- 기존의 코드에 이어서 작성한다.
title_only_slide_layout = prs.slide_layouts[5]
slide = prs.slides.add_slide(title_only_slide_layout)
shapes = slide.shapes
title_shape = slide.placeholders[0]
title_shape.text = '테이블생성'
rows = cols = 2
left = top = Inches(2.0)
width = Inches(6.0)
height = Inches(0.8)
table = shapes.add_table(rows, cols, left, top, width, height).table
# set column widths
table.columns[0].width = Inches(2.0)
table.columns[1].width = Inches(4.0)
# write column headings
table.cell(0, 0).text = '제목1'
table.cell(0, 1).text = '제목2'
# write body cells
table.cell(1, 0).text = '내용1'
table.cell(1, 1).text = '내용2'
prs.save('이미지.pptx')

참고
- 01~02행: prs.slide_layouts[5]에서 5는 ‘제목만’ 슬라이드를 의미한다.
- 05~06행: 제목을 의미하는 placeholder에 ‘Adding a Table’을 설정한다.
- 08~13행: add_table() 함수를 호출하여 표를 추가한다. 표는 몇 행, 몇 열로 만들 것인지와 위치, 크기를 설정 한다. rows와 cols를 2로 설정하여 2행 2열의 표를 만든다.
- 16~17행: 칼럼 크기를 설정한다.
- 20~25행: 표의 각 cell에 값을 설정한다. table.cell(행, 열)이다.