반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

 

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

 

업무는 물론 투자에도 도움이 될만한 전자공시시스템(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. 문단, 표 인덱싱)


이번 시간에는 글자의 스타일(폰트,크기,색상)을 적용하는 방법을 공부해보겠습니다.

 

 

1. 폰트

 

우선 폰트를 적용할 때에는 추가적인 import 필요하지 않습니다

 

<선 스타일 적용, 후 문단 추가 방법>

from docx import Document

# 새로운 문서 만들기
doc = Document()

#스타일 적용하기
style = document.styles['Normal']
font = style.font
font.name = 'Arial'

para = doc.add_paragraph('Some text\n')

 

위의 방법은 add_paragraph에도 적용할 수 있고, 위와 아래의 방법모두 add_run으로 쓰인 문장에 적용 가능합니다.

 

<선 문단 입력, 후 스타일 적용>

 

para.add_run('코딩유치원에 오신 것을 환영합니다.').bold = True

run = doc.paragraphs[0].runs[0]

run.font.name = 'Arial'

 

여기서 조금 불편한 점은 한글은 위의 방식으로 폰트 적용이 안되어서 다른 방법을 사용해야한다는 것입니다.

 

doc = Document('test.docx')

from docx.oxml.ns import qn

style = doc.styles['Normal']
style._element.rPr.rFonts.set(qn('w:eastAsia'), '맑은 고딕')
style.font.name = '맑은 고딕'
style.font.size = Pt(8)

para = doc.add_paragraph('맑은 고딕체 테스트')

# 저장
doc.save('test.docx')

 

 

2. 크기

 

문자 크기를 변경하기 위해서는 우선 아래와 같이 폰트 크기와 관련된 클래스를 import 해주어야 합니다.

from docx.shared import Pt

 

다음으로는 run 객체를 지정해주어야 하는데요. 저는 문단(paragraphs) 안의 모든 run 객체를 바꿔주는 코드를 짜보았습니다.

 

# 첫번째 문단의 문장(run)들을 리스트로 받기
para1 = doc.paragraphs[0].runs

# for 문을 이용해서 
for run in para1:
    run.font.size = Pt(20)

 

<동작 확인용 샘플코드>

from docx import Document
from docx.shared import Pt

doc = Document()

para = doc.add_paragraph('이 글자의 크기를 바꿔봅시다')

# 첫번째 문단의 문장(run)들을 리스트로 받기
para = doc.paragraphs[0].runs

# for 문을 이용해서 
for run in para:
    run.font.size = Pt(20)

# 저장
doc.save('test.docx')

 

<실행 결과>

 

3. 색깔

 

문자 색깔을 변경하기 위해서는 RGBColor 클래스를 import 해주어야 합니다.

 

from docx.shared import RGBColor

 

그 다음엔 문단을 하나 추가하고, 추가한 문단의 첫 문장을 run 객체로 선언해줍니다.

 

사실 paragraph를 생성하면 자동으로 run 객체를 생성하고 그것으로 문장을 써주는 개념이랍니다. 그래서 아래와 같이 add_run( )으로 문장을 써준 것이 아님에도 para2가 runs[0]를 가질 수 있는 것이죠.

para2 = doc.add_paragraph('글자 색깔을 바꿔봅시다')
run = para2.runs[0]
font = run.font

# RGB 컬러를 각각 16진수로 표현 (R, G, B)
font.color.rgb = RGBColor(0xFF, 0x24, 0xE9)

# 저장
doc.save('test.docx')

 

 

오늘 준비한 내용은 여기까지입니다.

 

오늘도 코딩유치원을 찾아주셔서 감사합니다.


<참고자료>

 

1.Python-docx을 이용한 워드 문서 자동 생성 - 3. 스타일 변경, Head

https://daaam11.tistory.com/12

 

2.[워드 문서 스타일 적용하기] python-docx 모듈 활용 - 네이버 블로그

https://m.blog.naver.com/sangja84/221530974938

반응형

+ Recent posts