https://ggondae.tistory.com/45
[python-pptx] 슬라이드 복사
아래 소스는 하나의 슬라이드가 있는 ppt 파일을 불러와 하나의 슬라이드만 복사하는 내용이다. 소스가 되는 슬라이드는 source_slide = prs.slides[0]에서 조정하면 된다. 참고 및 인용 : https://stackoverflo
ggondae.tistory.com
https://www.youtube.com/watch?v=YPziPF-WGXA
# pip install openpyxl
# pip install python-pptx
import openpyxl
import copy
from pptx import Presentation
# from pptx.enum.text import PP_PARAGRAPH_ALIGNMENT
from pptx.enum.text import PP_ALIGN
def copy_slide (pres, idx):
src_slide = pres.slides[idx]
blank_slide = pres.slide_layouts[6]
copied_slide = pres.slides.add_slide(blank_slide)
for shape in src_slide.shapes:
elem = shape.element
newElem = copy.deepcopy(elem)
copied_slide.shapes._spTree.insert_element_before(newElem, 'p:extLst')
return copied_slide
gradeFile = openpyxl.load_workbook(".\data.xlsx")
gradeSheet = gradeFile['Grade']
line = []
grades = []
for row in gradeSheet.iter_rows(min_row=2):
for cell in row:
line.append(cell.value)
grades.append(line)
line = []
pptFile = Presentation(".\성적표.pptx")
for grade in grades:
temp_slide = copy_slide(pptFile,0)
shape_list = temp_slide.shapes
shape_idx = {}
for idx, value in enumerate(shape_list):
shape_idx[value.name] = idx
name_shape = shape_list[shape_idx['name']]
name_shape.text = grade[0]
gradeTable = shape_list[shape_idx['grade']].table
for i in range(3):
gradeTable.cell(1, i).text = str(grade[i+1])
# gradeTable.cell(1, i).text_frame.paragraphs[0].alignment = PP_PARAGRAPH_ALIGNMENT
gradeTable.cell(1, i).text_frame.paragraphs[0].alignment = PP_ALIGN.CENTER
pptFile.save("성적표result.pptx")
'컴퓨터 > Python' 카테고리의 다른 글
vscode bandit error - 지원중단 (0) | 2023.10.18 |
---|---|
pandas 일부 시트만 수정하기 (0) | 2023.10.17 |
python faker 한글 더미 데이터 (0) | 2023.09.08 |
pandas 엑셀투파이썬 dataframe 속성 (0) | 2023.08.04 |
class 이해 (0) | 2023.07.27 |