Python, Django

파이썬, 자동으로 그림파일 불러 와서 워드파일 만들기

himzei 2022. 8. 29. 12:51

1시간 단축 할 수 있는 python 프로그래밍

보통 사진 촬영을 하고 난 뒤, 폴더 별로 사진을 정리한다. 

정리된 사진을 워드파일이나 한글파일에 삽입해서 정리해야 할 경우가 있다. 

업체로부터 촬영의뢰를 받고 결과보고서를 만들어야할 때, 100 명이 가까운 사진 파일을 

원본파일-1차보정파일-2차보정파일-정장합성 파일등을 변화된 모습을 보고서에 담아야 한다. 

이럴 때, 일일이 사진파일을 복사해서 워드에 담으려면 1시간 이상 걸린다. 

아래와 같이 코드를 작성하고 실행시키면 정말 1초안에 결과물이 만들어진다. 

 

 

코드해석

# 아래와 os와 docs를 임포트 한다. 
from os import listdir
from os.path import isdir

from docx import Document
from docx import shared

document = Document()
orig_dir = "./"
# file_list 변수에 현재 폴더결로를 담아준다
file_list = listdir(orig_dir)

# 현대 폴더에 있는 모든 폴더를 배열에 담아 폴더 하나씩을 실행시킨다.
for file_li in file_list:
	# 불러온 file_li가 폴더가 맞는지 확인한다. 맞다면 아래 코드를 실행시킨다. 
    if isdir("./"+file_li):
        photo_orig_dir = "./" + file_li
        photo_dir = listdir(photo_orig_dir)

        try:
        	# 테이블 만든다
            table = document.add_table(rows=2, cols=5)

            hdr_cells = table.rows[0].cells
            style0 = hdr_cells[0].paragraphs[0].add_run("원본")
            style1 = hdr_cells[1].paragraphs[0].add_run("기본보정")
            style2 = hdr_cells[2].paragraphs[0].add_run("메이크업보정")
            style3 = hdr_cells[3].paragraphs[0].add_run("정장/배경합성1")
            style4 = hdr_cells[4].paragraphs[0].add_run("정장/배경합성1")

            style0.font.size = shared.Pt(10)
            style1.font.size = shared.Pt(10)
            style2.font.size = shared.Pt(10)
            style3.font.size = shared.Pt(10)
            style4.font.size = shared.Pt(10)

            row_cells = table.rows[1].cells
            paragraph0 = row_cells[0].paragraphs[0].add_run()
            paragraph1 = row_cells[1].paragraphs[0].add_run()
            paragraph2 = row_cells[2].paragraphs[0].add_run()
            paragraph3 = row_cells[3].paragraphs[0].add_run()
            paragraph4 = row_cells[4].paragraphs[0].add_run()

			# flie_li 경로와 파일명을 합친후 불러온다
            paragraph0.add_picture(file_li + '/0.jpg')
            paragraph1.add_picture(file_li + '/1.jpg')
            paragraph2.add_picture(file_li + '/2.jpg')
            paragraph3.add_picture(file_li + '/3.jpg')
            paragraph4.add_picture(file_li + '/4.jpg')
        
        except FileNotFoundError:
            pass


document.save("demo.docx")