컴퓨터/Python

excel to python 개인별 성적표

풍경소리^^ 2023. 10. 16. 15:49

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