Python 파워포인트 파일로 기록할 수 있는 python-pptx 라이브러리 알아보기

오늘은 Python으로 파워포인트 파일을 만들 수 있고, 파일 내부의 문자열을 가져올 수도 있는 python-pptx 패키지를 알아보려 합니다.

python-pptx 설치

우선 virtualenv로 파이썬 환경을 분리해줍니다.

pip3 install virtualenv
virtualenv -mvenv env

env라는 이름의 가상 환경을 생성합니다.

source env/bin/activate

가상환경을 폴더에서 활성화합니다.

pip3 install --upgrade pip

pip의 업그레이드가 존재하는지 확인하고 진행합니다.

pip install python-pptx

pip로 python-pptx를 설치합니다.

제목

from pptx import Presentation

pptx 패키지에서 Presentation을 가져옵니다.

presentation = Presentation()
title_slide_layout = presentation.slide_layouts[0]
slide = presentation.slides.add_slide(title_slide_layout)

Presentation 객체를 만들고, 슬라이드 레이아웃을 생성합니다.

제목이 포함된 슬라이드 레이아웃을 슬라이드에 추가합니다.

해당 작업까지는 빈 제목 슬라이드가 생성된 상태입니다.

title = slide.shapes.title
title.text = "Hello, World!"

이제 슬라이드의 제목에 문자열을 넣을 수 있습니다.

presentation.save('test.pptx')

완성된 Presentation 객체에서 특정 경로로 파워포인트 파일을 저장할 수 있습니다.

슬라이드

from pptx import Presentation

pptx 패키지에서 Presentation을 가져옵니다.

presentation = Presentation()
bullet_slide_layout = presentation.slide_layouts[1]
slide = presentation.slides.add_slide(bullet_slide_layout)

Presentation 객체를 만들고, 슬라이드 레이아웃을 생성합니다.

머리말 슬라이드 레이아웃을 슬라이드에 추가합니다.

해당 작업까지는 빈 제목 슬라이드가 생성된 상태입니다.

shapes = slide.shapes
title_shape = shapes.title
title_shape.text = 'Adding Slide'

해당 슬라이드의 제목을 추가합니다.

body_shape = shapes.placeholders[1]
tf = body_shape.text_frame
tf.text = 'bullet slide layout'

텍스트 상자에 특정 문자열을 넣습니다.

p = tf.add_paragraph()
p.text = 'add 1 level paragraph'
p.level = 1

해당 텍스트 박스에 단락을 나눌 수 있게 할 수 있습니다.

presentation.save('test2.pptx')

완성된 Presentation 객체에서 특정 경로로 파워포인트 파일을 저장할 수 있습니다.

사진

slide.shapes.add_picture('test.png', Inches(1), Inches(1))
presentation.save('test3.pptx')

사진은 add_picture를 이용하여 우측과 윗 여백을 설정하고 파일로 저장할 수 있습니다.

from pptx import Presentation
from pptx.util import Inches

pptx 패키지에서 Presentation과 Inches를 가져옵니다.

pesentation = Presentation()
title_only_slide_layout = pesentation.slide_layouts[5]
slide = pesentation.slides.add_slide(title_only_slide_layout)

Presentation 객체를 만들고, 슬라이드 레이아웃을 생성합니다.

제목만 존재하는 슬라이드 레이아웃을 슬라이드에 추가합니다.

해당 작업까지는 빈 제목 슬라이드가 생성된 상태입니다.

shapes = slide.shapes
shapes.title.text = 'Adding Table'

이제 슬라이드의 제목에 문자열을 넣을 수 있습니다.

table = shapes.add_table(rows=2, cols=2, left=Inches(2.0), top=Inches(2.0), width=Inches(6.0), height=Inches(1.0)).table

제목 아래에 표를 생성할 수 있습니다.

해당 코드는 2열 2행의 표가 만들어지며, 여백은 2인치를 줬습니다.

table.cell(0, 0).text = 'name'
table.cell(0, 1).text = 'desc'

table.cell(1, 0).text = 'test_name'
table.cell(1, 1).text = 'test desc'

pesentation.save('test4.pptx')

표의 각자 셀에 값을 입력하고 파워포인트 파일로 저장할 수 있습니다.

문자열 가져오기

from pptx import Presentation

pptx 패키지에서 Presentation을 가져옵니다.

presentation = Presentation("test2.pptx")

특정 경로의 파워포인트 파일을 가져옵니다.

text_runs = []
for slide in presentation.slides:
    for shape in slide.shapes:
        for run in shape.text_frame.paragraphs:
            text_runs.append(run.text)

print(text_runs)

해당 파일의 슬라이드 모든 문자열을 가져올 수 있습니다.

Written on June 22, 2019