안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.
코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.
업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART)나 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

<Python-docx 관련 글>
2021.12.27 - [파이썬 패키지/Word] - [Python-docx] 파이썬으로 MS워드 문서 다루기 1편. 문서 생성, 저장, 불러오기, 글자 입력
2021.12.28 - [파이썬 패키지/Word] - [Python-docx] 파이썬으로 MS워드 문서 다루기 2편. 이미지 삽입, 표 삽입
2021.12.30 - [파이썬 패키지/Word] - [Python-docx] 파이썬으로 MS워드 문서 다루기 3편. 기존 양식의 내용 읽는 법 (ft. 문단, 표 인덱싱)
오늘은 지난 시간에 이어서 python-docx 라이브러리로 워드 파일에 이미지와 표를 삽입하는 방법을 공부해보겠습니다.
이번 시간 역시 VScode에서 쥬피터 노트북 파일(.ipynb)을 생성하여 코드를 실행해보겠습니다.
우선 가장 기본이 되는 Document 클래스를 import 해주세요.
from docx import Document
1. 이미지 삽입
우선 이미지를 삽입하려면 삽입할 이미지가 있어야겠죠?
이미지 파일을 하나 준비해주세요.
뭘 준비해야 할지 모르겠다면 그냥 화면을 캡쳐해서 jpg 혹은 png 파일로 저장해주세요.

저는 귀여운 고양이 사진을 워드 문서에 삽입해보겠습니다.
코드 설명은 아래에 주석으로 달아두었으며, 주석을 달지 않은 부분이 잘 이해가 안가신다면 지난 글을 참고해주세요.
<이미지 삽입 코드>
# Cm와 Inch 단위를 사용하기 위한 모듈
from docx.shared import Cm, Inches
doc = Document()
# 사진의 크기를 Cm 단위로 설정하여 삽입
doc.add_picture('cat.jpg',width= Cm(16), height= Cm(9))
# 사진의 크기를 Inch 단위로 설정하여 삽입
doc.add_picture('cat.jpg',width= Inches(4), height= Inches(3))
doc.save('이미지 삽입.docx')
<실행 결과>
워드 파일을 직접 열어주어야 함.

2. 표 삽입
1) 행과 열 설정 및 표 만들기
우리가 워드를 사용할 때 표를 삽입하려면 가장 먼저 행과 열의 갯수를 설정해주어야 하죠?

python-docx를 사용할 때에도 마찬가지로 가장 먼저 행(rows)와 열(cols)의 갯수를 설정해줍니다.
이전 시간에 배우셨던 add_paragraph의 개념과 동일하게 변수에 대입해줌으로써 객체화가 가능합니다.
<표 삽입 코드>
# 새로운 문서 만들기
doc = Document()
# 2행 3열의 표 만들기
table = doc.add_table(rows = 2, cols = 3)
# 만든 표의 스타일을 가장 기본 스타일인 'Table Grid'로 설정
table.style = doc.styles['Table Grid']
# 저장
doc.save('표 삽입.docx')
<실행 결과>

참고로 위에서 표 스타일을 Table Grid로 해주었는데, 이 스타일은 가장 기본적인 스타일입니다.
추후에 문단과 표를 정렬하고 스타일을 변경하는 방법에 대해서 다루어 보겠습니다.

2) 각 셀에 내용 입력
각 셀에는 아래와 같은 인덱싱 방법으로 표에 접근하여, 텍스트를 입력할 수 있습니다.
<표에 텍스트 삽입 코드>
# 표의 첫 행을 리스트로 가져오기
first_row = table.rows[0].cells
# 첫 행의 각 열들에 접근해서 값 입력
first_row[0].text = 'a'
first_row[1].text = 'b'
first_row[2].text = 'c'
# 표의 두번째 행을 리스트로 가져온 후, 각 셀에 값 입력
second_row = table.rows[1].cells
second_row[0].text = 'd'
second_row[1].text = 'e'
second_row[2].text = 'f'
# 저장
doc.save('표 삽입.docx')
<실행 결과>

3) 행과 열 추가하기
행 추가
row_cells = table.add_row().cells

위에서 굳이 변수에 대입해준 이유는 나중에 새로 만든 셀들에 값을 입력할 때, row_cells[0]과 같이 인덱싱하여 텍스트 입력이 가능하기 때문입니다.
열 추가
열을 추가할 때에는 행을 추가할 때와 다르게 반드시 width 값을 꼭 입력해주어야 합니다.
col_cells = table.add_column(width=Cm(2)).cells

오늘 준비한 내용은 여기까지입니다.
다음 시간에는 위에서 잠시 언급했던 paragraph에 스타일을 주거나, 정렬하는 방법, 그리고 표에 스타일을 주거나 간격을 조정하는 방법을 공부해보겠습니다.
<참고자료>
1. python-docx 공식 문서
https://python-docx.readthedocs.io/en/latest/index.html
'파이썬 패키지 > Word' 카테고리의 다른 글
| [Python-docx] 파이썬으로 MS워드 문서 다루기 5편. 문단 정렬& 표 셀 정렬 (0) | 2022.01.02 |
|---|---|
| [Python-docx] 파이썬으로 MS워드 문서 다루기 4편. 글자 폰트, 크기, 색깔 변경하기 (0) | 2022.01.01 |
| [Python-docx] 파이썬으로 MS워드 문서 다루기 3편. 기존 양식의 내용 읽는 법 (ft. 문단, 표 인덱싱) (0) | 2021.12.30 |
| [Python-docx] 파이썬으로 MS워드 문서 다루기 1편. 문서 생성, 저장, 불러오기, 글자 입력 (0) | 2021.12.27 |
| [Python/Pywin32] 파이썬으로 MS워드 문서 다루기 (결론. python-docx을 이용하자) (0) | 2021.12.22 |