μμ λ°μ΄ν°λ₯Ό κΈ°λ°μΌλ‘ μλ£μ¦ μ¬λΌμ΄λ μμ±νκΈ°
μ΄λ² μμ
μμλ μλ£μ¦ νμν¬μΈνΈ ν
νλ¦Ώ(.pptx
)κ³Ό νμ μ 보λ₯Ό λ΄μ μμ
(.xlsx
) νμΌμ μ½κ³ , μμ
μμ κ°μ Έμ¨ λ°μ΄ν°λ₯Ό λ°μν μλ‘μ΄ νμν¬μΈνΈ μ¬λΌμ΄λλ₯Ό μμ±ν΄ λ³΄κ² μ΅λλ€.
μ°Έκ³ : μ»΄ν¨ν°μμ μ€μ΅μΌλ‘ μ 곡λ νμ΄μ¬ νλ‘κ·Έλ¨μ μ§μ μ€νν κ²½μ°,
ν νλ¦Ώ PPT
(input_file.pptx)μνμ μ 보
(input_file.xlsx) νμΌμ΄ νμ΄μ¬ νλ‘κ·Έλ¨κ³Ό λμΌν ν΄λ λ΄ μμ΄μΌ ν©λλ€.
1. νμ λΌμ΄λΈλ¬λ¦¬ μν¬νΈ
import openpyxl from pptx import Presentation from io import BytesIO from pptx.enum.shapes import MSO_SHAPE_TYPE
-
io.BytesIO
: μ»΄ν¨ν°μ μ μ₯ 곡κ°μΈ λ©λͺ¨λ¦¬ λ΄μ λ°μ΄νΈ λ°μ΄ν°(0κ³Ό 1λ‘ μ΄λ£¨μ΄μ§ λ°μ΄ν°)λ₯Ό μ μ₯νκ³ , μ΄λ₯Ό νμΌμ²λΌ μ¬μ©ν μ μκ² ν΄μ£Όλ ν΄λμ€μ λλ€. -
pptx.enum.shapes.MSO_SHAPE_TYPE
: νμν¬μΈνΈμμ λ€μν λνμ νμ μ μ μνλ μμμ λλ€. λν, μ΄λ―Έμ§, ν μ€νΈ λ°μ€ λ±μ νμ μ ꡬλΆν λ μ¬μ©λ©λλ€.
2. νμν¬μΈνΈ νμΌ λ° μμ νμΌ λ‘λ
presentation = Presentation("input_file.pptx") wb = openpyxl.load_workbook("input_file.xlsx") sheet = wb.active
-
Presentation("input_file.pptx")
: νμν¬μΈνΈ νμΌμ λΆλ¬μ΅λλ€. -
openpyxl.load_workbook("input_file.xlsx")
: μμ νμΌμ λΆλ¬μ΅λλ€. -
wb.active
: μμ νμΌμ 첫 λ²μ§Έ μνΈλ₯Ό μ νν©λλ€.
3. μμ λ°μ΄ν° μ½κΈ°
data_sets = [] for row in sheet.iter_rows(min_row=2, values_only=True): data = { "AWARD_NAME": row[0], "NAME": row[1], "CONTENT": row[2], "DATE": row[3], "ORGANIZATION": row[4], } data_sets.append(data)
-
sheet.iter_rows()
: μμ μνΈμ κ° νμ λ°λ³΅ν΄μ μ½μ΄μ΅λλ€. μ¬κΈ°μλ 2λ²μ§Έ ν(min_row=2
)λΆν° μ½μ΅λλ€. -
values_only=True
: μ μ κ°μ μ§μ κ°μ Έμ΅λλ€. -
data_sets.append(data)
: κ° νμ λ°μ΄ν°λ₯Όdata
λΌλ λμ λλ¦¬λ‘ μ μ₯νκ³ , 리μ€νΈμ μΆκ°ν©λλ€.
4. μ¬λΌμ΄λ ν νλ¦Ώ μ ν
template_slide = presentation.slides[0]
presentation.slides[0]
: νμν¬μΈνΈμ 첫 λ²μ§Έ μ¬λΌμ΄λλ₯Ό ν νλ¦ΏμΌλ‘ μ νν©λλ€. μ΄ μ¬λΌμ΄λλ₯Ό λ°νμΌλ‘ μ μ¬λΌμ΄λλ₯Ό μμ±ν©λλ€.
5. μ¬λΌμ΄λ λ³΅μ¬ λ° μ΄λ―Έμ§, ν μ€νΈ μ²λ¦¬
for data in data_sets: # ν νλ¦Ώ μ¬λΌμ΄λλ₯Ό 볡μ¬νμ¬ μλ‘μ΄ μ¬λΌμ΄λ μμ± new_slide = presentation.slides.add_slide(template_slide.slide_layout) for shape in template_slide.shapes: # κ·Έλ£Ή λν μ²λ¦¬ if shape.shape_type == MSO_SHAPE_TYPE.GROUP: for sub_shape in shape.shapes: if sub_shape.shape_type == MSO_SHAPE_TYPE.PICTURE: # ...μ€λ΅... # μ΄λ―Έμ§ λν μ²λ¦¬ elif shape.shape_type == MSO_SHAPE_TYPE.PICTURE: image_stream = shape.image.blob # ...μ€λ΅... # ν μ€νΈ λν μ²λ¦¬ elif shape.has_text_frame: new_shape = new_slide.shapes.add_textbox(shape.left, shape.top, shape.width, shape.height) new_shape.text_frame.clear() # ν μ€νΈ λ³΅μ¬ for paragraph in shape.text_frame.paragraphs: new_paragraph = new_shape.text_frame.add_paragraph() # ...μ€λ΅...
-
presentation.slides.add_slide()
: ν νλ¦Ώ μ¬λΌμ΄λλ₯Ό μ¬μ©ν΄ μλ‘μ΄ μ¬λΌμ΄λλ₯Ό μΆκ°ν©λλ€. -
shape.shape_type == MSO_SHAPE_TYPE.GROUP
: κ·Έλ£ΉμΌλ‘ λ¬Άμ¬ μλ λνμ μ²λ¦¬ν λ κ·Έλ£Ή λ΄λΆμ λνλ€μ λ°λ‘ μ²λ¦¬ν©λλ€. -
shape.shape_type == MSO_SHAPE_TYPE.PICTURE
: μ΄λ―Έμ§ λνμ μ²λ¦¬ν λ μ΄λ―Έμ§λ₯Ό μ μ¬λΌμ΄λμ 볡μ¬ν©λλ€. -
shape.has_text_frame
: ν μ€νΈκ° μλ λνμ 볡μ¬ν λ, ν μ€νΈ λ°μ€λ₯Ό μλ‘ λ§λ€μ΄μ κ·Έ μμ ν μ€νΈλ₯Ό 볡μ¬ν©λλ€. ν μ€νΈμ ν¬κΈ°, κ΅΅κΈ°, κΈ°μΈμλ μ μ§ν©λλ€.
6. μμ λ°μ΄ν°λ‘ ν μ€νΈ λ체
for shape in new_slide.shapes: if shape.has_text_frame: for paragraph in shape.text_frame.paragraphs: if "<AWARD_NAME>" in paragraph.text: paragraph.text = data["AWARD_NAME"] elif "<NAME>" in paragraph.text: paragraph.text = data["NAME"] elif "<CONTENT>" in paragraph.text: paragraph.text = data["CONTENT"] elif "<DATE>" in paragraph.text: paragraph.text = data["DATE"] elif "<ORGANIZATION>" in paragraph.text: paragraph.text = data["ORGANIZATION"]
- μμ
λ°μ΄ν°(
data
)λ₯Ό νμν¬μΈνΈ μ¬λΌμ΄λμ μλ νΉμ ν μ€νΈμ κ΅μ²΄ν©λλ€. μλ₯Ό λ€μ΄,<AWARD_NAME>
λΌλ ν μ€νΈλ μμ μμ μ½μAWARD_NAME
λ°μ΄ν°λ‘ λ체λ©λλ€.
7. ν νλ¦Ώ μ¬λΌμ΄λ μ κ±° λ° κ²°κ³Ό μ μ₯
presentation.slides._sldIdLst.remove(presentation.slides._sldIdLst[0]) presentation.save("output_file.pptx")
-
_sldIdLst.remove()
: μ²μ μ¬μ©ν ν νλ¦Ώ μ¬λΌμ΄λλ₯Ό μμ ν©λλ€. -
presentation.save()
: μ΅μ’ κ²°κ³Όλ₯Όoutput_file.pptx
νμΌλ‘ μ μ₯ν©λλ€.
μ 체μ μΈ νλ¦ μμ½
-
μμ μμ λ°μ΄ν°λ₯Ό μ½μ΄μ΅λλ€.
-
첫 λ²μ§Έ μ¬λΌμ΄λλ₯Ό ν νλ¦ΏμΌλ‘ μ¬μ©νμ¬ μμ μ κ° λ°μ΄ν°λ₯Ό μλ‘μ΄ μ¬λΌμ΄λμ μ½μ ν©λλ€.
-
ν μ€νΈμ μ΄λ―Έμ§λ₯Ό ν νλ¦Ώκ³Ό λμΌνκ² λ³΅μ¬νλ©΄μ, ν μ€νΈ λ΄μ©μ μμ λ°μ΄ν°λ‘ λ체ν©λλ€.
-
ν νλ¦Ώ μ¬λΌμ΄λλ₯Ό μμ νκ³ , μ΅μ’ κ²°κ³Όλ₯Ό νμΌλ‘ μ μ₯ν©λλ€.
μμ κ°μ΄ μμ νμΌμμ λ°μ΄ν°λ₯Ό μ½μ΄μ, PPT ν νλ¦Ώ λ΄ placeholderλ₯Ό λ°κΎΈλ©΄ λμΌν νμμ μλ£μ¦ μ¬λΌμ΄λλ₯Ό μ¬λ¬ κ° μμ±ν μ μμ΅λλ€.
μ΄λ¬ν ꡬ쑰λ₯Ό μ μμ©νλ©΄ λλμ μλ£μ¦, μΈμ¦μ, λͺ ν¨ λ± λ€μν ν νλ¦Ώ κΈ°λ°μ λ¬Έμλ₯Ό μλμΌλ‘ μμ±ν μ μμ΅λλ€.
Run the code and check the results.
Guidelines
AI Tutor
Publish
Design
Upload
Notes
Favorites
Help
Code Editor
Execution Result
The document is empty.
Try running the code.