엑셀 데이터를 슬라이드에 표로 삽입하기
Chapter 1에서 배운 openpyxl
과 python-pptx
라이브러리를 함께 사용하면, 간단한 코드로 엑셀 시트의 데이터를 파워포인트의 표로 삽입할 수 있습니다.
이번 수업에서는 엑셀 파일에서 데이터를 불러와 파워포인트 슬라이드에 표를 생성하는 방법을 알아보겠습니다.
1. 프레젠테이션 생성 및 표 삽입하기
먼저 파워포인트 프레젠테이션을 생성하고 슬라이드에 표를 추가합니다.
from pptx import Presentation from openpyxl import load_workbook # PowerPoint 파일 생성 prs = Presentation() # 새 슬라이드 추가 (레이아웃 5: 빈 슬라이드) slide = prs.slides.add_slide(prs.slide_layouts[5]) # 엑셀 파일 불러오기 wb = load_workbook('input_file.xlsx') ws = wb.active
코드 설명
-
프레젠테이션 생성 및 슬라이드 추가 :
Presentation()
으로 프레젠테이션 객체를 생성하고, 슬라이드를 추가합니다. -
새 슬라이드 추가 :
prs.slides.add_slide(prs.slide_layouts[5])
로 레이아웃 5(빈 슬라이드)를 사용해 새 슬라이드를 추가합니다. -
엑셀 파일 불러오기 :
load_workbook('input_file.xlsx')
로 입력 데이터가 담긴 엑셀 파일을 불러오고,wb.active
로 현재 활성화된 시트를 선택합니다.
2. 슬라이드에 표 추가하기
openpyxl로 불러온 엑셀 데이터를 바탕으로 열과 행 크기를 설정하고, 파워포인트 슬라이드에 표를 추가합니다.
# 엑셀 데이터 확인 및 행, 열 크기 설정 rows, cols = ws.max_row, ws.max_column # 표 추가 (슬라이드 크기에 맞춰 위치와 크기 조정) table = slide.shapes.add_table(rows, cols, Inches(0.5), Inches(0.5), Inches(9), Inches(5.5)).table
코드 설명
-
엑셀 데이터 확인 :
ws.max_row
와ws.max_column
으로 엑셀 시트의 행과 열 크기를 확인합니다. -
표 추가 :
slide.shapes.add_table()
로 슬라이드에 표를 추가하고,table
변수에 표 객체를 할당합니다.
3. 엑셀 데이터를 표에 추가하기
이제 openpyxl을 사용해 엑셀 데이터를 표에 추가합니다.
읽어온 엑셀 데이터를 표에 추가할 때는 enumerate
함수를 사용해 행과 열의 인덱스를 가져와야 합니다.
enumerate 함수는 리스트, 튜플, 문자열 등의 데이터를 입력받아 인덱스와 값을 순서대로 반환합니다.
data = ['apple', 'banana', 'cherry'] for idx, value in enumerate(data): print(f'Index: {idx}, Value: {value}') # 출력값: # Index: 0, Value: apple # Index: 1, Value: banana # Index: 2, Value: cherry
엑셀 시트에서 데이터를 가져올 때는 iter_rows()
를 사용해 행과 열별로 데이터를 가져옵니다.
예를 들어, 엑셀의 데이터가 다음과 같다면
Header 1 | Header 2 |
---|---|
Data 1 | Data 2 |
Data 3 | Data 4 |
iter_rows 함수로 가져온 데이터는 다음과 같습니다.
for row in ws.iter_rows(max_row=rows, max_col=cols, values_only=True): for value in row: print(value) # 출력값: # Header 1 # Header 2 # Data 1 # Data 2 # Data 3 # Data 4
이제 enumerate 함수와 iter_rows 함수를 사용해 엑셀 데이터를 표에 추가해 보겠습니다.
# 표 스타일 지정 (첫 번째 행을 헤더로 설정하고 스타일 적용) for i, row in enumerate(ws.iter_rows(values_only=True)): for j, value in enumerate(row): cell = table.cell(i, j) # 각 셀에 데이터 삽입 cell.text = str(value) # 폰트 크기 및 자동 줄바꿈 설정 for paragraph in cell.text_frame.paragraphs: paragraph.font.size = Pt(12) # 폰트 크기 조정 paragraph.font.bold = True if i == 0 else False # 첫 번째 행(헤더)은 굵게 표시 paragraph.font.color.rgb = RGBColor(255, 255, 255) if i == 0 else RGBColor(0, 0, 0) # 헤더는 흰색 글씨 cell.text_frame.word_wrap = True # 텍스트 자동 줄바꿈
코드 설명
-
표 스타일 지정 :
enumerate(ws.iter_rows(values_only=True))
로 엑셀 데이터를 행별로 가져와 표에 추가합니다. -
각 셀에 데이터 삽입 :
cell.text = str(value)
로 각 셀에 데이터를 추가합니다. -
for 반복문 :
for paragraph in cell.text_frame.paragraphs
로 슬라이드 내 표의 각 셀에 있는 텍스트를 가져와 스타일을 지정합니다. -
폰트 크기 및 자동 줄바꿈 설정 :
paragraph.font.size
,paragraph.font.bold
,paragraph.font.color.rgb
,cell.text_frame.word_wrap
으로 표의 스타일을 지정합니다.
iter_rows() 메서드는 입력받은 데이터의 열(세로줄)을 출력한다.
가이드라인
AI 튜터
배포
디자인
업로드
수업 노트
즐겨찾기
도움말
코드 에디터
실행 결과
문서가 비어 있습니다.
코드를 실행해보세요.