엑셀 데이터로 자동화된 수료증 만들기(설치 X)

JEONGYUJIN·2024년 12월 2일

Python

목록 보기
2/4

저는 두 개의 (나름) 대형 동아리를 운영하는 회장입니다 ㅎㅎ 운영진에게는 매 기수 재밌는 활동들뿐만 아니라 자잘한 서류 작업들이 참 많습니다. ^^;;

수료증을 만들거나 명단을 관리하는 일은 필수적이지만, 그만큼 반복적인 작업에서 실수가 일어나기 쉽습니다. 작성할 때마다 이름이나 학과, 숫자 등이 잘못 입력되는 경우가 많았습니다. 하나씩 수작업으로 처리하다 보니 반복적인 실수나 시간 낭비가 발생했고, 이는 효율적인 운영에 큰 걸림돌이 되었습니다. 이러한 문제를 해결하기 위해, 자동화된 방법으로 수료증을 생성하는 방법을 고민하게 되었고 파이썬을 활용한 자동화하는 법을 쓰고 있는데 공유해보려고 합니다!

📄 작업 목적

엑셀 데이터에서 이름, 학과, 숫자 정보를 자동으로 PPT에 삽입하여 수료증을 자동으로 생성하는 방법을 설명합니다. 파이썬 코드와 구체적인 파일 준비 방법을 소개하며, 여러분의 작업 흐름을 자동화할 수 있는 방법을 제공합니다.


🛠️ 필요한 준비물

  1. 구글 코랩 환경: 파이썬 코드를 실행할 수 있는 구글 코랩 환경이 필요합니다.

    코랩 사용이 처음이라면!
    구글 로그인을 한다. >> 파란색 "새 노트" 클릭
    https://colab.google.com/

  1. 엑셀 파일: 이름, 학과, 숫자 등의 정보를 포함하는 엑셀 파일.

    • 예시 형식:
      | 숫자 | 이름 | 학교 |
      |------|-------|----------|
      | 00 | 홍길동 | 경희대학교 |
      | 01 | 김태희 | 서울대학교 |
      • 파일명 예시: contents.xlsx
  2. PPT 템플릿 파일: 수료증 템플릿이 포함된 PPT 파일. 수료증의 각 위치에 (숫자), (이름), (학교) 등의 텍스트를 포함시켜두세요.

    • 파일명 예시: before.pptx

편하게 작업하려면 Canva 같은 툴로 수료증 디자인 저장 + 변동되는 텍스트만 위치에 맞추어 텍스트박스 추가하면 된다!


🔧 필요한 라이브러리

작업을 위해 필요한 파이썬 라이브러리입니다. 코랩에서 아래와 같이 설치하고 사용합니다.

!pip install python-pptx pandas

코랩이 처음인 당신.. 위에 저거 글씨 복사하고 붙여놓고 왼쪽 실행버튼 누르면 된다.

  • python-pptx: PPT 파일을 생성하고 조작하는 라이브러리.
  • pandas: 엑셀 데이터를 다루는 라이브러리.

🧑‍💻 전체 코드 흐름

1. 엑셀 데이터 로드

엑셀 파일에서 데이터를 읽어옵니다.

import pandas as pd

# 엑셀 데이터 불러오기
data = pd.read_excel('/content/contents.xlsx')

2. PPT 템플릿 로드

PPT 템플릿 파일을 불러옵니다.

from pptx import Presentation

# PPT 템플릿 불러오기
template = Presentation('/content/before.pptx')

3. 슬라이드 복제 함수

기존 슬라이드를 복제하는 함수입니다.

def duplicate_slide(pres, slide_index):
    slide = pres.slides[slide_index]
    slide_layout = slide.slide_layout
    copied_slide = pres.slides.add_slide(slide_layout)

    for shape in slide.shapes:
        if shape.has_text_frame:
            new_shape = copied_slide.shapes.add_textbox(
                left=shape.left, top=shape.top, width=shape.width, height=shape.height
            )
            new_shape.text = shape.text

    return copied_slide

4. 텍스트 서식 설정

텍스트 상자의 글꼴, 크기, 정렬 등을 설정하는 함수입니다.

from pptx.enum.text import PP_ALIGN
from pptx.util import Pt

def set_text_format(text_frame, font_name, font_size, alignment=None):
    p = text_frame.paragraphs[0]
    p.font.name = font_name
    p.font.size = font_size
    if alignment:
        p.alignment = alignment

5. 데이터 삽입 및 텍스트 수정

엑셀 데이터를 PPT 템플릿에 삽입하고, 텍스트를 원하는 내용으로 교체하는 부분입니다.

# 슬라이드 복제 및 데이터 삽입
for index, row in data.iterrows():
    slide = duplicate_slide(template, 0)  # 0번째 슬라이드 복사

    # 텍스트 상자 확인 및 대체
    for shape in slide.shapes:
        if shape.has_text_frame:
            text_frame = shape.text_frame
            if "(숫자)" in shape.text:
                formatted_number = f"{int(row['(숫자)']):03}"  # 3자리로 패딩
                shape.text = shape.text.replace("(숫자)", formatted_number)
                set_text_format(text_frame, font_name="궁서", font_size=Pt(15))

            if "(이름)" in shape.text:
                shape.text = shape.text.replace("(이름)", row['(이름)'])
                set_text_format(text_frame, font_name="궁서", font_size=Pt(10.5), alignment=PP_ALIGN.RIGHT)

            if "(학교)" in shape.text:
                shape.text = shape.text.replace("(학교)", row['(학교)'])
                set_text_format(text_frame, font_name="궁서", font_size=Pt(10.5), alignment=PP_ALIGN.RIGHT)

6. 결과물 저장

수정된 PPT 파일을 저장하는 부분입니다.

# 결과물 저장
template.save("/content/output_combined.pptx")

📊 작업 흐름

  1. 엑셀 파일 준비: 필요한 데이터를 엑셀로 정리합니다.
  2. PPT 템플릿 준비: 템플릿에서 텍스트 상자에 (숫자), (이름), (학교) 등 자리 표시자를 넣습니다.
  3. 코드 실행: 위 코드대로 구글 코랩에서 실행하여 템플릿을 복제하고, 엑셀 데이터를 각 슬라이드에 삽입합니다.
  4. 결과 확인: 자동으로 생성된 수료증 PPT를 다운로드하여 확인합니다.

제 벨로그로 설명이 부족하시다면,,
이 작업 흐름을 베껴가셔서 GPT한테 물어보면서 어디가 안된다!
(에러 메세지를 복사 붙여넣기하고) 너가 고쳐봐라 어디가 문제냐 내가 뭘 처리해줄까?
이것도 되냐!! 다 물어보면 된답니다 하하.


유용한 팁

  • 텍스트 서식: 텍스트 크기, 글꼴, 정렬을 바꾸고 싶다면 set_text_format 함수를 사용하세요.
  • 자동화: 수료증 외에도 다양한 자동화 작업에 응용할 수 있습니다. 예를 들어, 인사말이나 다른 데이터를 자동으로 삽입하는 방식으로 확장할 수 있습니다.
profile
일단 하고 보자 (펠리컨적 마인드 ㅠㅠ)

0개의 댓글