Ch.1 Python 라이브러리 15선

python-pptx — 코드로 PPT 만들기

python-pptx의 역할과 활용 사례를 설명할 수 있다코드로 슬라이드를 생성하고 텍스트/이미지를 배치할 수 있다데이터 기반 보고서 PPT를 자동 생성할 수 있다

매주 같은 양식 PPT를 데이터만 바꿔서 만들고 있다면

매주 월요일 아침, 지난 주 매출 데이터를 PPT에 옮겨 붙이고 있습니다. 양식은 똑같은데 숫자만 다릅니다. 이걸 매주 30분씩 반복합니다.

데이터만 바뀌는 PPT를 자동으로 만들 수 없을까?

python-pptx를 쓰면 됩니다. 코드로 슬라이드를 만들고, 텍스트·표·이미지를 자동 배치합니다. 데이터만 넣으면 PPT가 뚝딱.


article

핵심 내용

python-pptx는 Python으로 파워포인트 파일(.pptx)을 만드는 라이브러리입니다. 슬라이드 추가, 텍스트 입력, 이미지 삽입, 표 생성을 전부 코드로 합니다.

한 줄 요약: 자동화된 디자이너 — 데이터만 주면 PPT를 뚝딱 만든다 실생활 비유: 파워포인트 앱을 열지 않고도, 코드가 알아서 슬라이드를 만들고, 글을 넣고, 사진을 배치하고, 저장까지 합니다.

같은 양식의 PPT를 반복해서 만들 때, 데이터만 바꿔서 자동 생성합니다.

수동으로 하면: PPT 열기 → 지난 주 파일 복사 → 숫자 하나하나 수정 → 차트 업데이트 → 매주 30분

python-pptx 쓰면: python report.py → 데이터 자동 반영 → PPT 파일 생성 완료 → 3초

python-pptx를 설치하고, 슬라이드 1장짜리 PPT를 만들어 봅시다.

pip install python-pptx
from pptx import Presentation
from pptx.util import Inches, Pt

# 새 프레젠테이션 생성
prs = Presentation()

# 제목 슬라이드 추가 (레이아웃 0번 = 제목)
slide = prs.slides.add_slide(prs.slide_layouts[0])

# 제목과 부제목 입력
slide.shapes.title.text = "주간 매출 보고서"
slide.placeholders[1].text = "2025년 3월 둘째 주"

# 파일 저장
prs.save("report.pptx")
print("PPT 생성 완료: report.pptx")

실행하면 report.pptx 파일이 생성됩니다. PowerPoint로 열어보면 제목 슬라이드가 완성되어 있습니다. 코드 한 줄도 안 고치고 PPT가 만들어졌습니다.

AI에게 PPT 생성 코드를 만들어 달라고 할 때, 슬라이드 구성 + 데이터 소스 + 디자인 요구사항을 구체적으로 말하세요.

좋은 프롬프트 예시: "python-pptx로 매출 보고서 PPT 만들어줘. 표지(제목+날짜) + KPI 요약(매출·이익·성장률) + 차트 이미지 삽입 + 요약 슬라이드. 남색 배경에 흰색 글자"

프롬프트 변형: "엑셀 파일(sales.xlsx)에서 데이터를 읽어서 각 지점별 슬라이드를 자동으로 만들어줘. 지점 이름이 제목, 아래에 매출 표 넣어줘"

from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN

prs = Presentation()

# ── 표지 슬라이드 ──
slide = prs.slides.add_slide(prs.slide_layouts[6])  # 빈 슬라이드

# 배경색: 남색
bg = slide.background
fill = bg.fill
fill.solid()
fill.fore_color.rgb = RGBColor(0x1B, 0x26, 0x5B)

# 제목 텍스트 추가
from pptx.util import Inches, Pt
txBox = slide.shapes.add_textbox(Inches(1), Inches(2.5), Inches(8), Inches(1.5))
tf = txBox.text_frame
p = tf.paragraphs[0]
p.text = "주간 매출 보고서"
p.font.size = Pt(36)
p.font.color.rgb = RGBColor(0xFF, 0xFF, 0xFF)
p.font.bold = True
p.alignment = PP_ALIGN.CENTER

prs.save("styled_report.pptx")
print("스타일 적용 PPT 완성!")

미니 프로젝트: 주간 매출 보고서 PPT 자동 생성기 표지 + KPI 카드 + 지점별 매출 표 + 요약까지 한 번에 만듭니다.

from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN
from datetime import datetime

def create_weekly_report(data):
    """주간 매출 데이터 → PPT 자동 생성"""
    prs = Presentation()
    today = datetime.now().strftime("%Y-%m-%d")
    
    # ── 1. 표지 ──
    slide = prs.slides.add_slide(prs.slide_layouts[0])
    slide.shapes.title.text = "주간 매출 보고서"
    slide.placeholders[1].text = f"보고일: {today}"
    
    # ── 2. KPI 요약 슬라이드 ──
    slide = prs.slides.add_slide(prs.slide_layouts[1])
    slide.shapes.title.text = "핵심 지표 (KPI)"
    body = slide.placeholders[1].text_frame
    body.text = f"총 매출: {data['total']:,}원"
    body.add_paragraph().text = f"전주 대비: {data['growth']}%"
    body.add_paragraph().text = f"목표 달성률: {data['achievement']}%"
    
    # ── 3. 지점별 매출 표 ──
    slide = prs.slides.add_slide(prs.slide_layouts[5])
    slide.shapes.title.text = "지점별 매출"
    
    rows, cols = len(data["branches"]) + 1, 3
    table = slide.shapes.add_table(rows, cols, Inches(1), Inches(2), Inches(8), Inches(0.5 * rows)).table
    
    # 헤더
    for i, header in enumerate(["지점", "매출", "전주 대비"]):
        table.cell(0, i).text = header
    
    # 데이터
    for r, branch in enumerate(data["branches"], 1):
        table.cell(r, 0).text = branch["name"]
        table.cell(r, 1).text = f"{branch['sales']:,}원"
        table.cell(r, 2).text = f"{branch['change']}%"
    
    # ── 4. 요약 ──
    slide = prs.slides.add_slide(prs.slide_layouts[1])
    slide.shapes.title.text = "요약 및 액션 아이템"
    body = slide.placeholders[1].text_frame
    body.text = f"이번 주 총 매출 {data['total']:,}원"
    body.add_paragraph().text = f"최고 실적 지점: {data['top_branch']}"
    
    filename = f"weekly_report_{today}.pptx"
    prs.save(filename)
    print(f"보고서 생성 완료: {filename}")
    return filename

# 예시 데이터
sample_data = {
    "total": 15_800_000,
    "growth": 12.5,
    "achievement": 95,
    "top_branch": "강남점",
    "branches": [
        {"name": "강남점", "sales": 5_200_000, "change": 15},
        {"name": "홍대점", "sales": 4_100_000, "change": 8},
        {"name": "판교점", "sales": 3_500_000, "change": 22},
        {"name": "부산점", "sales": 3_000_000, "change": -3},
    ],
}

create_weekly_report(sample_data)

실행 방법: weekly_report.py로 저장 → python weekly_report.py 실행 → 4장짜리 보고서 PPT가 자동 생성됩니다. 팁: openpyxl과 결합하면 엑셀에서 데이터를 읽어 PPT를 만들 수 있습니다.

key

핵심 용어

슬라이드 생성

표지, 본문, 빈 슬라이드 등 다양한 레이아웃 지원

텍스트 & 서식

폰트, 색상, 크기, 굵기, 정렬 등 세밀한 서식 제어

이미지 & 표

차트 이미지 삽입, 데이터 테이블 자동 생성

주간/월간 보고서

매출·KPI 데이터를 넣으면 보고서 PPT 자동 생성

수료증·상장

이름만 바꿔서 100장 일괄 생성

영업 제안서

고객별 맞춤 데이터를 넣은 제안서 자동 제작

수업 자료

데이터에서 문제·정답 슬라이드를 자동 생성

check_circle

핵심 정리

  • 1python-pptx는 코드로 PPT를 만드는 라이브러리 — 슬라이드·텍스트·표·이미지를 자동 생성
  • 2Presentation() → add_slide() → title.text / add_table() → save()가 기본 흐름
  • 3반복되는 보고서·수료증·제안서를 데이터만 바꿔 일괄 생성할 수 있다
  • 4openpyxl, matplotlib과 결합하면 엑셀 데이터 → 차트 → PPT 풀 자동화 가능

퀴즈와 인터랙션으로 더 깊이 학습하세요

play_circle인터랙티브 레슨 시작