워드 문서에 표와 이미지 삽입하기
이제 워드 문서에 표와 이미지를 삽입하는 코드를 만듭니다. add_table() 함수를 정의하여, 데이터 수집, 표 생성 및 이미지 삽입까지 모든 한 번에 처리할 수 있게 만들겠습니다.
비주얼 스튜디오 코드에서 새로운 파일을 생성하고, 파일명을 'step_3_2.py'로 변경하세요. 다음과 같이 코드를 입력하고, 실행 아이콘을 클릭하세요. 'output' 폴더에 'step_3_3.docx' 파일이 생성됩니다.
ch06/step_3_2.py
import json
from pathlib import Path
from docx.document import Document as DocumentObject # Document 객체
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT # 단락 정렬 방법
from docx.shared import Cm # 크기 설정 클래스(센티미터)
from step_1_1 import OUT_DIR # 'output' 폴더 경로
from step_2_2 import OUT_2_2 # 이미지 경로
from step_2_3 import fetch_trends_by_filter # 데이터 수집 함수
from step_3_1 import apply_font_style, init_docx
def add_table(doc: DocumentObject, category: str, option: str): # 11
fetch_trends_by_filter(category, option) # 쇼핑 트랜드 수집
imgs_path: list = json.loads(OUT_2_2.read_text(encoding="utf8")) # 13
n_items = len(imgs_path) # 이미지 개수 # 14
n_cols = 5 # 열 개수 # 14
n_rows = n_items // n_cols + (1 if n_items % n_cols > 0 else 0) # 행 개수 # 16
para = doc.add_paragraph(style="Heading 2") # 표 제목
text_filter = f"{option}의 {category} 트렌드"
apply_font_style(para.add_run(text_filter), size_pt=15, is_bold=True)
table = doc.add_table(rows=n_rows, cols=n_cols, style="Table Grid") # 표 생성 # 22
for tr in table.rows: # 행 반복 처리 # 23
for td in tr.cells: # 열 반복 처리 # 24
if len(imgs_path) > 0: # 처리할 경로가 남아있는 경우 # 25
img_path = imgs_path.pop(0) # 첫 번째 위치의 경로 추출 # 26
p_cell = td.paragraphs[0] # 현재 셀의 기본 Paragraph 객체 선택 # 27
p_cell.add_run().add_picture(img_path, width=Cm(3)) # 28
p_cell.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 단략 정렬
doc.add_paragraph("") # 빈 단락 추가
p_list = doc.add_paragraph(style="List Bullet") # 목록 서식 적용한 단락 추가 # 32
text_notice = '보다 자세한 정보는 네이버플러스 스토어에서 확인하세요.'
apply_font_style(p_list.add_run(text_notice), size_pt=9)
if __name__ == "__main__":
doc = init_docx() # 38
add_table(doc, "패션의류", "10대 여성") # 표 추가
doc.save(OUT_DIR / f"{Path(__file__).stem}.docx")
실행 결과

11 주어진 조건으로 쇼핑 트렌드 데이터를 수집하고, 표로 출력하는 함수 add_table()을 정의합니다.
13 이미지 경로가 저장된 JSON 파일을 불러와서 변수 imgs_path에 리스트 형식으로 저장합니다.
14~16 표의 행과 열의 개수를 계산합니다. 변수 n_items, n_cols, n_rows는 각각 이미지, 열, 행의 개수를 의미합니다.
18 함수 add_paragraph()를 사용하여 표 제목울 작성합니다.
22 함수 add_table()를 이용해 Table 객체를 생성하고 변수 table 저장합니다. 매개변수 rows에 행의 개수, cols에 열의 개수, style에 표애 적용할 서식을 전달합니다. "Table Grid"는 표의 윤곽선을 실선으로 그리는 서식입니다.
23~25 Table 객체의 rows 속성을 사용하여 행별로, Row 객채의 cells 속성을 사용하여 열별로 표의 셀에 데이터를 입력합니다. imgs_path 변수에 표에 삽입해야 할 이미지가 남아 있는 경우 26~29행을 실행합니다.
26 함수 pop(0)을 사용하여 변수 imgs_path에 저장된 첫 번째 이미지 경로를 추출하고, img_path에 저장합니다.
27 Cell 객체의 셀에 자동으로 생성된 Paragraph 객체를 불러 와서 변수 p_cell에 저장합니다.
28 함수 add_run()를 사용하여 Run 객체를 생성하고, 이어서 함수 add_imag()를 사용하여 이미지를 삽입합니다. 이 함수의 첫 번째 입력값으로 이미지 경로를, width에 이미지의 너비를 센티미터 단위로 입력합니다.
32 보고서에 안내 메시지를 추가합니다. 매개변수 style에 'List Bullet'를 전달하여 목록 서식을 적용합니다.
38 함수 add_table()를 실행하여 데이터 수집과 표 생성을 처리합니다.
파이썬에서 마이크로소프트 워드를 사용해 쇼핑 트렌드를 분석한 보고서를 작성했습니다.
'프로그래밍 언어 > Python' 카테고리의 다른 글
| 종목별 시가총액 데이터 수집하기 - 종목별 시가총액 데이터 수집하기(1) (1) | 2026.02.21 |
|---|---|
| 종목별 시가총액 데이터 수집하기 - 파이썬 패키지 준비하기 (0) | 2026.02.18 |
| 보고서 작성하기 (0) | 2026.02.11 |
| 쇼핑 트렌드 정보 수집하기 (0) | 2026.02.08 |
| 상품 이미지 캡처하기 (0) | 2026.02.05 |