본문 바로가기
파이썬/업무자동화

[업무자동화] Python으로 Word 작성하기

by Vacant June 2024. 4. 18.
반응형

0. Intro

라이브러리 불러오기, 단락 작성, 파일 저장 예제

from docx import Document

doc = Document()
doc.add_paragraph("Hello, world!")

doc.save(r"C:\your_path\your_doc_name.docx") # 파일이 저장될 경로와 이름 입력

 

1. 단락 작성

1-1. 정렬 (왼쪽/가운데/오른쪽/양쪽 맞춤)

from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT # 단락 정렬을 위한 요소 불러오기

doc = Document()
paragraph = doc.add_paragraph("Hello, world!")

paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT # 왼쪽 맞춤
paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 가운데 맞춤
paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT # 오른쪽 맞춤
paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY # 양쪽 맞춤

doc.save(r"C:\your_path\your_doc_name.docx") # 파일이 저장될 경로와 이름 입력

 

1-2. 굵게, 기울임꼴, 밑줄 (bold, italic, underline)

from docx import Document

doc = Document()
paragraph = doc.add_paragraph("Hello, world!")

run = paragraph.runs[0]
run.bold = True
run.italic = True
run.underline = True

doc.save(r"C:\your_path\your_doc_name.docx") # 파일이 저장될 경로와 이름 입력

 

1-3. 폰트

from docx import Document
from docx.shared import Pt, RGBColor # 포인트 단위, 색상 요소 불러오기

doc = Document()
paragraph = doc.add_paragraph("Hello, world!")

run = paragraph.runs[0]
run.font.name = 'Arial' # 글꼴
run.font.size = Pt(15) # 글꼴 크기
run.font.color.rgb = RGBColor(255, 0, 0)  # 글씨 색 설정 (예시: 빨강)

doc.save(r"C:\your_path\your_doc_name.docx") # 파일이 저장될 경로와 이름 입력

 

1-4. 단락 여백

from docx import Document
from docx.shared import Pt # 포인트 단위 요소 불러오기

doc = Document()
paragraph = doc.add_paragraph("Hello, world!")

paragraph.paragraph_format.space_before = Pt(10) # 단락 앞 여백
paragraph.paragraph_format.space_after = Pt(25) # 단락 뒤 여백

doc.save(r"C:\your_path\your_doc_name.docx") # 파일이 저장될 경로와 이름 입력

 

2. 표 작성

2-1. 표 생성

2-1-1. 표 삽입

from docx import Document

doc = Document()
table = doc.add_table(rows=3, cols=2)

doc.save(r"C:\your_path\your_doc_name.docx") # 파일이 저장될 경로와 이름 입력

 

 

2-1-2. 표 아래에 줄 추가

from docx import Document

doc = Document()
table = doc.add_table(rows=2, cols=2) # 2x2 표
table.add_row().cells # 표 아래에 줄 추가하여 3x2 표로 변경 

doc.save(r"C:\your_path\your_doc_name.docx") # 파일이 저장될 경로와 이름 입력

 

2-2. 표 스타일

from docx import Document

doc = Document()
table = doc.add_table(rows=3, cols=2)
table.style = 'Table Grid' # 실선 테두리 스타일

doc.save(r"C:\your_path\your_doc_name.docx") # 파일이 저장될 경로와 이름 입력

 

table style 목록:

Normal Table

Table Grid

Light Shading

더보기

Light Shading Accent 1
Light Shading Accent 2
Light Shading Accent 3
Light Shading Accent 4
Light Shading Accent 5
Light Shading Accent 6
Light List
Light List Accent 1
Light List Accent 2
Light List Accent 3
Light List Accent 4
Light List Accent 5
Light List Accent 6
Light Grid
Light Grid Accent 1
Light Grid Accent 2
Light Grid Accent 3
Light Grid Accent 4
Light Grid Accent 5
Light Grid Accent 6
Medium Shading 1
Medium Shading 1 Accent 1
Medium Shading 1 Accent 2
Medium Shading 1 Accent 3
Medium Shading 1 Accent 4
Medium Shading 1 Accent 5
Medium Shading 1 Accent 6
Medium Shading 2
Medium Shading 2 Accent 1
Medium Shading 2 Accent 2
Medium Shading 2 Accent 3
Medium Shading 2 Accent 4
Medium Shading 2 Accent 5
Medium Shading 2 Accent 6
Medium List 1
Medium List 1 Accent 1
Medium List 1 Accent 2
Medium List 1 Accent 3
Medium List 1 Accent 4
Medium List 1 Accent 5
Medium List 1 Accent 6
Medium List 2
Medium List 2 Accent 1
Medium List 2 Accent 2
Medium List 2 Accent 3
Medium List 2 Accent 4
Medium List 2 Accent 5
Medium List 2 Accent 6
Medium Grid 1
Medium Grid 1 Accent 1
Medium Grid 1 Accent 2
Medium Grid 1 Accent 3
Medium Grid 1 Accent 4
Medium Grid 1 Accent 5
Medium Grid 1 Accent 6
Medium Grid 2
Medium Grid 2 Accent 1
Medium Grid 2 Accent 2
Medium Grid 2 Accent 3
Medium Grid 2 Accent 4
Medium Grid 2 Accent 5
Medium Grid 2 Accent 6
Medium Grid 3
Medium Grid 3 Accent 1
Medium Grid 3 Accent 2
Medium Grid 3 Accent 3
Medium Grid 3 Accent 4
Medium Grid 3 Accent 5
Medium Grid 3 Accent 6
Dark List
Dark List Accent 1
Dark List Accent 2
Dark List Accent 3
Dark List Accent 4
Dark List Accent 5
Dark List Accent 6
Colorful Shading
Colorful Shading Accent 1
Colorful Shading Accent 2
Colorful Shading Accent 3
Colorful Shading Accent 4
Colorful Shading Accent 5
Colorful Shading Accent 6
Colorful List
Colorful List Accent 3
Colorful List Accent 4
Colorful List Accent 5
Colorful List Accent 6
Colorful Grid
Colorful Grid Accent 1
Colorful Grid Accent 2
Colorful Grid Accent 3
Colorful Grid Accent 4
Colorful Grid Accent 5
Colorful Grid Accent 6

 

2-3. 표 내용 입력

2-3-1. 하나씩 입력

from docx import Document

doc = Document()
table = doc.add_table(rows=3, cols=2)
table.style = 'Table Grid' # 실선 테두리 스타일

table.cell(0, 0).text = '이름'
table.cell(0, 1).text = '나이'
table.cell(1, 0).text = 'John'
table.cell(1, 1).text = '30'
table.cell(2, 0).text = 'Jane'
table.cell(2, 1).text = '28'

doc.save(r"C:\your_path\your_doc_name.docx") # 파일이 저장될 경로와 이름 입력

 

2-3-2. 한 번에 입력

from docx import Document

doc = Document()
table = doc.add_table(rows=3, cols=3)
table.style = 'Table Grid'

# 입력하고자 하는 값을 리스트에 작성
cell_values = [
    ['A', 'B', 'C'],
    ['1', '2', '3'],
    ['a', 'b', 'c']
    ]

for i, row in enumerate(table.rows):
    for j, cell in enumerate(row.cells):
        cell.text = cell_values[i][j]

doc.save(r"C:\your_path\your_doc_name.docx") # 파일이 저장될 경로와 이름 입력

 

2-4. 셀 서식

2-4-1. 세로 정렬, 단락 서식(글꼴, 단락 정렬, 여백)

from docx import Document
from docx.shared import Pt, RGBColor # 포인트 단위, 색상 요소 불러오기
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT # 단락 정렬을 위한 요소 불러오기
from docx.enum.table import WD_CELL_VERTICAL_ALIGNMENT # 셀 세로 정렬을 위한 요소 불러오기

doc = Document()
table = doc.add_table(rows=3, cols=3)
table.style = 'Table Grid'

cell_values = [
    ['A', 'B', 'C'],
    ['1', '2', '3'],
    ['a', 'b', 'c']
    ]

for i, row in enumerate(table.rows):
    for j, cell in enumerate(row.cells):
        cell.text = cell_values[i][j]
        
        cell.vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.CENTER # 셀 세로 정렬 (TOP, CENTER, BOTTOM 중 선택)
        paragraph = cell.paragraphs[0]
        paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 단락 정렬 (LEFT, CENTER, RIGHT, JUSTIFY 중 선택)
        paragraph.paragraph_format.space_before = Pt(10) # 단락 앞 여백
        paragraph.paragraph_format.space_after = Pt(10) # 단락 뒤 여백
        run = paragraph.runs[0] if paragraph.runs else paragraph.add_run()
        run.font.name = 'Arial' # 글꼴
        run.font.size = Pt(15) # 글꼴 크기
        run.font.color.rgb = RGBColor(255, 0, 0)  # 글씨 색 설정 (예시: 빨강)

doc.save(r"C:\your_path\your_doc_name.docx") # 파일이 저장될 경로와 이름 입력

 

2-4-2. 셀 배경 채우기

from docx import Document
from docx.oxml import parse_xml
from docx.oxml.ns import nsdecls

doc = Document()
table = doc.add_table(rows=3, cols=3)
table.style = 'Table Grid'

cell_values = [
    ['A', 'B', 'C'],
    ['1', '2', '3'],
    ['a', 'b', 'c']
    ]

for i, row in enumerate(table.rows):
    for j, cell in enumerate(row.cells):
        cell.text = cell_values[i][j]      

cell_to_color = table.cell(2, 1) # 배경 적용을 원하는 셀 선택
shading_elm = parse_xml(r'<w:shd {} w:fill="FFFF00"/>'.format(nsdecls('w'))) # 예시: 노란색(FFFF00) 배경 적용
cell_to_color._element.get_or_add_tcPr().append(shading_elm)

doc.save(r"C:\your_path\your_doc_name.docx") # 파일이 저장될 경로와 이름 입력

 

3. 제목 작성 (스타일)

3-1. 제목 삽입

from docx import Document

doc = Document()
doc.add_heading("Hello, world!", level=1) # 원하는 제목 수준을 설정, 숫자가 작을수록 상위

doc.save(r"C:\your_path\your_doc_name.docx") # 파일이 저장될 경로와 이름 입력

 

3-2. 제목 서식 설정

from docx import Document
from docx.shared import Pt, RGBColor # 포인트 단위, 색상 요소 불러오기
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT # 단락 정렬을 위한 요소 불러오기

doc = Document()
style_head = doc.styles['Heading 1'] # 제목 1의 스타일을 설정
font_head = style_head.font
font_head.name = 'Arial' # 글꼴
font_head.size = Pt(13) # 글꼴 크기
font_head.bold = True # 굵게
font_head.color.rgb = RGBColor(0, 0, 0) # 글씨 색 (예시: 검정)
style_head.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT # 단락 정렬 (LEFT, CENTER, RIGHT, JUSTIFY 중 선택)
style_head.paragraph_format.space_before = Pt(0) # 단락 앞 간격을 0pt로 설정
style_head.paragraph_format.space_after = Pt(10) # 단락 뒤 간격을 10pt로 설정

doc.add_heading("Hello, world!", level=1)

doc.save(r"C:\your_path\your_doc_name.docx") # 파일이 저장될 경로와 이름 입력

 

4. 그림/사진

4-1. 그림/사진 삽입

from docx import Document
from docx.shared import Cm # cm 단위 요소 불러오기

doc = Document()

# 그림 삽입 및 크기 설정 (단위: cm)
picture = doc.add_picture('path_to_image.jpg', width=Cm(4), height=Cm(3)) # 그림이 저장된 경로와 파일명 입력

doc.save(r"C:\your_path\your_doc_name.docx") # 파일이 저장될 경로와 이름 입력

 

4-2. 그림/사진을 표의 셀 안에 삽입

from docx import Document
from docx.shared import Cm # cm 단위 요소 불러오기

doc = Document()
table = doc.add_table(rows=2, cols=2) # 표 삽입
cell = table.cell(0, 1)  # 첫 번째 행, 두 번째 열 선택
cell.text = "Here is an image:" # 셀 안에 텍스트 작성
cell.add_paragraph().add_run().add_picture('path_to_image.jpg') # 그림이 저장된 경로와 파일명 입력

doc.save(r"C:\your_path\your_doc_name.docx") # 파일이 저장될 경로와 이름 입력

 

728x90

댓글