오늘 배워 오늘 쓰는 OpenAPI/프로젝트

[Python-pptx] 부동산 지역 분석 보고서 만들기 (자동화)

ai-creator 2020. 5. 23. 10:06
반응형

< 목표 >

부동산 지역분석 포스팅을 통해 저장된 그래프를 사용하여

파워포인트를 이용하여 보고서를 만들어보겠습니다. 물론, 프로그램이 자동으로 수행되게요~

 

<사전 준비 >

- 부동산 지역분석 내용을 step6) 까지 수행

 

** 아래 작성된 소스코드는 <사전준비>를 통해

    graph 폴더에 png 파일 다운로드 및 법정동 코드로 sigu_list가 있는 상태로 동작하는 소스코드 입니다.

# Step1) 파워포인트 객체 선언

from pptx import Presentation # 라이브러리 
from pptx.util import Inches # 사진, 표등을 그리기 위해

prs = Presentation() # 파워포인트 객체 선언

# Step2) 제목 layer

title_slide_layout = prs.slide_layouts[0] # 0 : 제목슬라이드에 해당
slide = prs.slides.add_slide(title_slide_layout) # 제목 슬라이드를 파워포인트 객체에 추가

# 제목 - 제목에 값넣기
title = slide.shapes.title  # 제목
title.text = "지역별 아파트 분석" # 제목에 값 넣기

# 부제목
subtitle = slide.placeholders[1] # 제목상자는 placeholders[0], 부제목상자는 [1]
subtitle.text = "작성자 : 홍길동" 

# Step3) 시/구 하드 코딩

제일 아래 코드에는 si/gu list로 수행합니다.

si="서울특별시"
gu = "광진구"

# Step4) 그래프 layer

Step4-1) 수공급 그래프

img_path = 'graph\\%s_%s_수공급.png' %(si, gu)

title_only_slide_layout = prs.slide_layouts[5] 
slide = prs.slides.add_slide(title_only_slide_layout)

shapes = slide.shapes
shapes.title.text = '%s %s 수공급' %(si, gu)

left = Inches(0.5)
height = Inches(5)
width = Inches(9)
top = Inches(2)
# width, hegith가 없을 경우 원본 사이즈로 
pic = slide.shapes.add_picture(img_path, left, top, width=width,height=height)

Step 4-2) 아파트 목록 그래프

img_path = 'graph\\%s_%s_대장아파트.png' %(si, gu)

title_only_slide_layout = prs.slide_layouts[5] 
slide = prs.slides.add_slide(title_only_slide_layout)

shapes = slide.shapes
shapes.title.text = '%s %s 아파트 목록' %(si, gu)

left = Inches(0.5)
height = Inches(5)
width = Inches(9)
top = Inches(2)
# width, hegith가 없을 경우 원본 사이즈로 
pic = slide.shapes.add_picture(img_path, left, top, width=width,height=height)

 

Step 4-3) 매매 전세 그래프

img_path = 'graph\\%s_%s_대장아파트매매전세.png' %(si, gu)

title_only_slide_layout = prs.slide_layouts[5] 
slide = prs.slides.add_slide(title_only_slide_layout)

shapes = slide.shapes
shapes.title.text = '%s %s 대장아파트매매전세' %(si, gu)

left = Inches(0.5)
height = Inches(5)
width = Inches(9)
top = Inches(2)
# width, hegith가 없을 경우 원본 사이즈로 
pic = slide.shapes.add_picture(img_path, left, top, width=width,height=height)

# Step5) 저장

prs.save('apt_report.pptx')

 

# 최종 완성본

## 객체 선언
from pptx import Presentation # 라이브러리 
from pptx.util import Inches # 사진, 표등을 그리기 위해

prs = Presentation() # 파워포인트 객체 선언

## 제목슬라이드
title_slide_layout = prs.slide_layouts[0] # 0: 제목슬라이드
slide = prs.slides.add_slide(title_slide_layout)
#> 제목
title = slide.shapes.title
title.text = "지역별 아파트 분석"
#> 부제목
subtitle = slide.placeholders[1]
subtitle.text = "작성자 : 홍길동"


# 이미지 슬라이드 추가 (함수)
def add_imagelayer(img_pth, title_text):
    img_path = img_pth

    title_only_slide_layout = prs.slide_layouts[5] 
    slide = prs.slides.add_slide(title_only_slide_layout)

    shapes = slide.shapes
    shapes.title.text = title_text

    left = Inches(0.5)
    height = Inches(5)
    width = Inches(9)
    top = Inches(2)
    # width, hegith가 없을 경우 원본 사이즈로 
    pic = slide.shapes.add_picture(img_path, left, top, width=width,height=height)
    
# 반복문으로 이미지 슬라이드 추가하기
for sigu in sigu_list[1:6]:
    si = sigu.split(" ")[0]
    gu = sigu.split(" ")[1]
    print(si, gu)
    add_imagelayer('graph\\%s_%s_수공급.png' %(si, gu), '%s %s 수공급' %(si, gu))
    add_imagelayer('graph\\%s_%s_대장아파트.png' %(si, gu), '%s %s 아파트 목록' %(si, gu))
    add_imagelayer('graph\\%s_%s_대장아파트매매전세.png' %(si, gu),  '%s %s 대장아파트매매전세' %(si, gu))
    
# 저장
prs.save('apt_report.pptx')

정말 멋진 파워포인트가 뿅! 하고 나타났습니다.

apt_report.pptx
1.15MB

오늘도 칼퇴하세요~ㅎㅎ

 

 

 


저작물의 저작권은 작성자에게 있습니다.
공유는 자유롭게 하시되 댓글 남겨주세요~
상업적 용도로는 무단 사용을 금지합니다.
끝까지 읽어주셔서 감사합니다^^

반응형