중간 중간 함수 내용이 궁금하면

https://github.com/python-openxml/python-docx

여기로 들어가면 된다.




스타일 변경

글을 쓸 때 폰트 명, 폰트 크기등을 변경 시키고 싶을 것이다.

기본 설정 폰트를 변경하고 싶으면 document.styles['Normal'] 을 변경하면 된다.


1
2
3
style = document.styles['Normal']
style.font.name = '맑은 고딕'
tyle.font.size = Pt(8)
cs



* 한글폰트 변경


하지만 이 방식은 영문 폰트만 변경 되고 한글 폰트는 변경되지 않는다.

아쉽게도 한글 폰트 변경을 지정한 클래스가 없기 때문에 우리는 직접 설정해 줘야한다.


1
2
3
from docx.oxml.ns import qn, nsdecls
 
style._element.rPr.rFonts.set(qn('w:eastAsia'), '맑은 고딕'# 한글 폰트를 따로 설정해 준다
cs

이런 방법으로



* 스타일 생성


만약 새로운 스타일을 정의해 쓰고 싶다면


1
2
3
style_make = document.styles.add_style('banana', WD_STYLE_TYPE.CHARACTER)
 
document.add_paragraph("banana", style = style_make)
cs

이런 방법으로 사용하면 된다.




Head 지정 및 Head Style 변경

본문을 작성하면 제목을 써야 하고 제목으로 본문을 정리할 수 있다.

방식은 스타일을 새로 만드는 것과 비슷하다. 하지만 Head는 기본 정의된 Heading1~9를 바탕으로 지정 가능하다.

Heading은 1부터 9까지 순차적으로 대 분류에서 소 분류로 정의 되어 있다.


1
2
3
4
5
6
7
8
style_1 = document.styles.add_style('Heading_1', WD_STYLE_TYPE.PARAGRAPH)
style_1.base_style = document.styles['Heading 1']
style_1.font.name = '맑은 고딕'
style_1._element.rPr.rFonts.set(qn('w:eastAsia'), '맑은 고딕'# 한글 폰트를 따로 설정해 준다
style_1.font.size = Pt(14)
style_1.font.color.rgb = RGBColor(0x000x000x00)
 
document.add_paragraph("banana" , style='Heading_1')
cs

*폰트 색상은 RGB 16진수로 입력하면 원하는 색상이 된다.

중간 중간 함수 내용이 궁금하면

https://github.com/python-openxml/python-docx

여기로 들어가면 된다.



표 만들기(add_table())

표를 만들기 위해 우선 add_table함수를 통해 행렬의 갯수를 입력한다.

표 스타일은 기본인 'Table Grid'로 뒀다.

이후 셀에 가운데 정렬로 알파벳을 순서대로 입력한 예제이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
from docx import Document
 
document = Document()
 
table = document.add_table(rows = 1, cols = 4)
table.style = document.styles['Table Grid']
 
hdr_cells = table.rows[0].cells
hdr_cells[0].paragraphs[0].add_run('A').bold = True
hdr_cells[0].paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER  #가운데 정렬
hdr_cells[1].paragraphs[0].add_run('B').bold = True
hdr_cells[1].paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER
hdr_cells[2].paragraphs[0].add_run('C').bold = True
hdr_cells[2].paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER
cs




셀 크기 조절하기(cells[0].width)

만든 표의 셀 크기도 조절 가능하다.


1
hdr_cells[0].width = Cm(2.9)
hdr_cells[0].height = Cm(2.9)
cs





셀 추가하기(table.add_row())

표를 만든 후 추가적으로 셀을 삽입 할 때 사용

셀을 추가한 후에는 테이블 사용과 동일하다.


1
2
3
4
5
6
7
row_cells = table.add_row().cells
row_cells[0].paragraphs[0].add_run('A').bold = True
row_cells[0].paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER
row_cells[1].paragraphs[0].add_run('B').bold = True 
row_cells[1].paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER
row_cells[2].paragraphs[0].add_run('C').bold = True 
row_cells[2].paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER
cs





셀 배경색 넣기

셀에 배경색을 넣는 함수는 따로 없기 때문에 직접 xml을 건드려 바꿔준다.

w:fill="BFBFBF" 에서 원하는 색상을 RGB값 16진수로 입력하면 된다.

table.rows[0].cells[0] 자리에 원하는 셀을 입력하면 된다. 


1
2
3
4
from docx.oxml import parse_xml

shading_elm = parse_xml(r'<w:shd {} w:fill="BFBFBF"/>'.format(nsdecls('w'))) #음영
table.rows[0].cells[0]._tc.get_or_add_tcPr().append(shading_elm)
cs





셀 병합(merge())

표 제작의 마지막으로 병합을 해보자 

병합은 두 셀 값을 받아 사각형 모양으로 병합이 된다.


1
2
3
t_sum_a = table.cell(10)
t_sum_b = table.cell(20)
t_sum_a.merge(t_sum_b)
cs



다음 글에선 스타일 변경 및 생성에 대해 포스팅 하겠다.



중간 중간 함수 내용이 궁금하면

https://github.com/python-openxml/python-docx

여기로 들어가면 된다.




python-docx를 사용하기에 앞서 Document() 함수를 변수에 입력해 준다.


1
2
3
from docx import Document
 
document = Document()
cs




add_paragraphs()


본문은 add_paragraphs()함수를 이용해 입력해 준다.

* 이후 같은 paragraphs에 입력을 원할경우 add_run() 함수를 사용한다.


1
2
3
4
5
6
from docx import Document
 
document = Document()
 
document.add_paragraph("본문")
document.add_paragraph.add_run('추가 본문')
cs




굵게, 기울임 (.bold / .italic)

본문을 굵게 만들고 싶다면 .bold 와 .italic 을 사용하면된다.


1
2
3
4
5
6
from docx import Document
 
document = Document()
 
document.add_paragraph("본문").bold = True
document.paragraphs[-1].add_run('BOLD \n').italic = True
cs





중앙 정렬 (WD_ALIGN_PARAGRAPH.CENTER)

중앙 정렬을 하기 위해선 WD_ALIGN_PARAGRAPH 을 import 해 줘야 한다.

그리고 이전 paragraph을 지정해 중앙 정렬해 주면 된다.


1
2
3
4
5
6
7
8
9
10
from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
 
document = Document()
 
document.add_paragraph("본문").bold = True
document.paragraphs[-1].add_run('BOLD \n').italic = True
 
last_paragraph = document.paragraphs[-1
last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
cs





이미지 삽입 (add_pcture())

이미지를 삽입 할 때 가로 길이와 세로길이를 지정해 불러올 수 있다.

width()는 가로 길이, height는 세로 길이를 지정한다.


1
2
3
4
5
6
7
from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.shared import Cm, Inches
 
document = Document()
 
document.add_picture(Text_image_name,width= Cm(4.91), height= Cm(8))
cs

*길이의 경우 CM이외에도 인치(Inches) 등의 단위도 사용 가능 하다.




저장하기 (save())

마지막으로 작성한 워드 파일을 저장하는 함수이다.

함수 안에 원하는 파일 명을 입력하면 끝


1
2
3
4
5
from docx import Document
 
document = Document()
 
document.save('make.docx')
cs


파싱한 데이터를 그냥두면 파싱한 이유가 없다.

그래서 파싱한 데이터를 문서화 시키려고 하는데

이 또한 자료가 부족했다.


그래서 부족한 정보이지만 나누고자 글을 쓴다.






Python-docx


Python-docx : 파이썬을 이용해 워드 문서를 작성할 수 있게 만든 모듈




Python-docx 다운 방법


이전 문서인 pyparsing을 다운 받는 방법과 동일하다.

간단하다 pip을 이용해 아래와 같이 입력해 다운받으면 된다.

아나콘다를 사용하지 않는다면 윈도우에서 pip 다운로드 사용방법을 검색해 보자


pip install python-docx


이후 코드에 docx을 import 해 모듈을 사용하면 된다.


1
import docx
cs


+ Recent posts