워드 문서 생성 및 파일로 저장
from docx import Document
filename = '워드문서 1.docx'
document = Document()
document.save(filename)
워드 문서 생성 및 문단 추가
from docx import Document
filename = '워드문서 2.docx'
document = Document()
document.add_paragraph('첫 번째 문단 입니다.')
document.add_paragraph('두 번째 문단 입니다.')
document.add_paragraph('세 번째 문단 입니다.')
document.save(filename)
첫 번째 문단 출력
from docx import Document
filename = '워드문서 2.docx'
# document 객체 생성
document = Document(filename)
# 문단 목록
paragraphs = document.paragraphs
# 첫번째 문단
first_paragraph = paragraphs[0]
# 첫번째 문단 내 문자열 출력
print(first_paragraph.text)
# 코드 3-14 문단에 스타일 적용
from docx import Document
# font 관련 내용을 다루는 Pt 클래스 import
from docx.shared import Pt
from docx.oxml.ns import qn
filename = '워드문서 2.docx'
# document 객체 생성
document = Document(filename)
# 첫번째 문단의 첫 번째 런에 접근 (문단 전체가 하나의 런)
first_paragraph = document.paragraphs[0]
first_run = first_paragraph.runs[0]
# 해당 런에 다양한 스타일 적용
first_run.italic = True
first_run.underline = True
first_run.bold = True
first_run.font.size = Pt(24)
# 한글 폰트
first_run.font.name = 'HY 견고딕'
first_run._element.rPr.rFonts.set(qn('w:eastAsia'), 'HY 견고딕')
# strike: True 인 경우 문자 중앙에 라인이 그러짐.
first_run.font.strike = True
filename = '워드문서 3.docx'
document.save(filename)
문단에 새로운 스타일의 텍스트 추가
from docx import Document
# font 관련 내용을 다루는 Pt 클래스 import
from docx.shared import Pt
from docx.oxml.ns import qn
filename = '워드문서 3.docx'
# document 객체 생성
document = Document(filename)
# 두번째 문단의 첫 번째 런에 접근 (문단 전체가 하나의 런)
second_paragraph = document.paragraphs[1]
new_run = second_paragraph.add_run('새로운 스타일의 텍스트')
# 해당 런에 다양한 스타일 적용
new_run.italic = True
new_run.underline = True
new_run.bold = True
new_run.font.size = Pt(18)
# 한글 폰트
new_run.font.name = 'HY 목각파임 B'
new_run._element.rPr.rFonts.set(qn('w:eastAsia'), 'HY 목각파임 B')
filename = '워드문서 4.docx'
document.save(filename)
# 코드 3-16 문단에 그림 추가
from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.enum.text import WD_BREAK
filename = '워드문서 4.docx'
# document 객체 생성
document = Document(filename)
# 새로운 문단 추가
new_paragraph = document.add_paragraph()
# 새로운 문단의 가운데 정렬
new_paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
# 새로운 문단에 새로운 런을 추가
logo_run = new_paragraph.add_run()
# 새로 추가한 런에 그림 추가
logo_run.add_picture('bjpublic_logo.jpg')
# 그림을 추가한 다음 줄 바꾸기를 적용
logo_run.add_break(WD_BREAK.LINE)
# 그림 설명을 위한 런 추가
caption_run = new_paragraph.add_run('[그림 비에이퍼블릭 로고]')
filename = '워드문서 5.docx'
document.save(filename)
문단에 테이블 추가
from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.shared import RGBColor
filename = '워드문서 5.docx'
# document 객체 생성
document = Document(filename)
# 2 행 2 열 크기의 테이블 추가
table = document.add_table(rows=2, cols=2)
# 테이블의 테두리 그려줌. default 는 테두리 없음.
table.style = 'Table Grid'
# 1 행 1 열의 셀 접근
table.cell(0,0).text = '1 행 1 열'
# 1 행 2 열의 셀 접근과 문단 가져오기
# paragraph = table.cell(0,1).paragraph[0]
paragraph = table.cell(0,1).add_paragraph()
new_run = paragraph.add_run('1 행 2 열')
new_run.bold = True
# 텍스트 색상 변경
new_run.font.color.rgb = RGBColor(0xff, 0x00, 0x00)
# 2 행 1 열의 셀 접근 과 새로운 문단 추가
new_paragraph = table.cell(1,0).add_paragraph()
new_paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
new_run = new_paragraph.add_run('2 행 1 열')
new_run.italic = True
new_run.font.color.rgb = RGBColor(0,0,255)
# 2 행 2 열의 셀 접근 과 새로운 문단 추가
# paragraph = table.cell(1,1).add_paragraph[0]
paragraph = table.cell(1,1).add_paragraph()
paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
new_run = paragraph.add_run('2 행 2 열 첫 번째')
new_run.italic = True
new_run.font.color.rgb = RGBColor(0x00,0xff,0x00)
new_paragraph = table.cell(1,1).add_paragraph()
new_run = new_paragraph.add_run('2 행 2 열 두 번째')
new_run.bold = True
new_run.italic = True
new_run.font.color.rgb = RGBColor(0x66,0x00,0xcc)
filename = '워드문서 6.docx'
document.save(filename)
규칙파일 내용 읽어 오기
from docx.shared import Cm
from docx.shared import Pt
from docx.oxml.ns import qn
# from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.enum.text import WD_BREAK
from docx import Document
def get_template(filename):
file = open(filename, 'r')
logo = file.readline().split(':')[1].strip()
title = file.readline().split(':')[1].strip()
content = file.readline().split(':')[1].strip()
agendas = file.readline().split(':')[1].strip()
date = file.readline().split(':')[1].strip()
author = file.readline().split(':')[1].strip()
return logo, title, content, agendas, date, author
logo, title, content, agendas, date, author = get_template('report2.txt')
logo
title
content
agendas
date
author
# python-docx 설치
from docx.shared import Cm
from docx.shared import Pt
from docx.oxml.ns import qn
# from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.enum.text import WD_BREAK
from docx import Document
def get_template(filename):
file = open(filename, 'r')
logo = file.readline().split(':')[1].strip()
title = file.readline().split(':')[1].strip()
content = file.readline().split(':')[1].strip()
agendas = file.readline().split(':')[1].strip()
date = file.readline().split(':')[1].strip()
author = file.readline().split(':')[1].strip()
return logo, title, content, agendas, date, author
# 로고 그림을 추가하는 함수
def add_logo(document, logo_path):
logo_p = document.add_paragraph()
# logo_p.alignment = WD_ALIGN_PARAGRAPH.RIGHT
logo_p.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT
logo_run = logo_p.add_run()
logo_run.add_picture(logo_path, width=Cm(3), height=Cm(3))
logo_run.add_break(WD_BREAK.LINE)
logo_run.add_break(WD_BREAK.LINE)
# 타이틀을 추가하는 함수
def add_title(document, title):
title_p = document.add_paragraph()
# title_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
title_p.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
title_run = title_p.add_run(title)
title_run.bold = True
title_run.font.size = Pt(20)
# title_run.font_name = '새굴림'
title_run.font.name = '맑은 고딕'
# title_run._element.rPr.rFonts.set(qn('w:eastAsia'), '새굴림')
title_run._element.rPr.rFonts.set(qn('w:eastAsia'), '맑은 고딕')
title_run.add_break(WD_BREAK.LINE)
# 본문을 추가하는 함수
def add_content(document, content):
content_p = document.add_paragraph()
# content_p.alignment = WD_ALIGN_PARAGRAPH.LEFT
content_p.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT
content_run = content_p.add_run(content)
content_run.font.size = Pt(12)
# content_run.font_name = '새굴림'
content_run.font.name = '맑은 고딕'
# content_run._element.rPr.rFonts.set(qn('w:eastAsia'), '새굴림')
content_run._element.rPr.rFonts.set(qn('w:eastAsia'), '맑은 고딕')
content_run.add_break(WD_BREAK.LINE)
# 안건을 추가하는 함수
def add_agendas(document, agendas):
for agenda in agendas:
agenda_p = document.add_paragraph(agenda, style='List Bullet')
agenda_run = agenda_p.runs[0]
agenda_run.font.size = Pt(12)
# agenda_run.font_name = '새굴림'
agenda_run.font.name = '맑은 고딕'
# agenda_run._element.rPr.rFonts.set(qn('w:eastAsia'),
'새굴림')
agenda_run._element.rPr.rFonts.set(qn('w:eastAsia'), '맑은
고딕')
# 날짜를 추가하는 함수
def add_date(document, date):
date_p = document.add_paragraph()
# date_p.alignment = WD_ALIGN_PARAGRAPH.CENTER
date_p.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
date_run = date_p.add_run(date)
date_run.font.size = Pt(12)
# date_run.font_name = '새굴림'
date_run.font.name = '맑은 고딕'
# date_run._element.rPr.rFonts.set(qn('w:eastAsia'), '새굴림')
date_run._element.rPr.rFonts.set(qn('w:eastAsia'), '맑은 고딕')
date_run.add_break(WD_BREAK.LINE)
logo, title, content, agendas, date, author =
get_template('report2.txt')
filename = 'report2.docx'
document = Document()
add_logo(document, logo)
add_title(document, title)
add_content(document, content)
add_agendas(document, agendas.split(','))
add_date(document, date)
add_date(document, author)
filename = 'report3.docx'
document.save(filename)