Guidelines

μ—‘μ…€ 데이터λ₯Ό μŠ¬λΌμ΄λ“œμ— ν‘œλ‘œ μ‚½μž…ν•˜κΈ°

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 ν•¨μˆ˜λŠ” 리슀트, νŠœν”Œ, λ¬Έμžμ—΄ λ“±μ˜ 데이터λ₯Ό μž…λ ₯λ°›μ•„ μΈλ±μŠ€μ™€ 값을 μˆœμ„œλŒ€λ‘œ λ°˜ν™˜ν•©λ‹ˆλ‹€.

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 1Header 2
Data 1Data 2
Data 3Data 4

iter_rows ν•¨μˆ˜λ‘œ κ°€μ Έμ˜¨ λ°μ΄ν„°λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

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으둜 ν‘œμ˜ μŠ€νƒ€μΌμ„ μ§€μ •ν•©λ‹ˆλ‹€.

Mission
0 / 1

iter_rows() λ©”μ„œλ“œλŠ” μž…λ ₯받은 λ°μ΄ν„°μ˜ μ—΄(μ„Έλ‘œμ€„)을 좜λ ₯ν•œλ‹€.

O
X

Guidelines

AI Tutor

Publish

Design

Upload

Notes

Favorites

Help

Code Editor

Run
Generate

Execution Result

Input/Result

The document is empty.

Try running the code.