Word 문서는 비즈니스 문서, 보고서, 계약서 등 다양한 상황에서 널리 사용됩니다.
파이썬의 python-docx 라이브러리를 사용하면 Word 문서를 자동으로 생성하고 수정할 수 있습니다.
이번 글에서는 python-docx를 활용해 Word 문서를 생성하고 텍스트와 이미지 추가, 서식 지정 등을 자동화하는 방법을 실습 예제와 함께 소개합니다.
1. python-docx 설치
python-docx는 Word 문서를 생성하고 다룰 수 있는 파이썬 라이브러리입니다.
다음 명령어로 설치할 수 있습니다:
pip install python-docx
2. Word 문서 생성
Word 문서를 새로 생성하고 기본 텍스트를 추가하는 방법을 살펴보겠습니다.
예제: 기본 문서 생성
from docx import Document
# 문서 생성
doc = Document()
# 텍스트 추가
doc.add_heading("파이썬으로 생성된 Word 문서", level=1)
doc.add_paragraph("이 문서는 python-docx를 사용하여 자동으로 생성되었습니다.")
# 문서 저장
doc.save("generated_document.docx")
print("Word 문서가 생성되었습니다.")
위 코드는 새 문서를 생성하고 제목과 본문을 추가한 후 저장합니다.
add_heading()
은 제목을 추가하는 데 사용됩니다.
3. 텍스트 서식 지정
python-docx를 사용해 텍스트에 서식을 지정할 수 있습니다.
예를 들어, 굵은 글씨나 이탤릭체로 텍스트를 강조할 수 있습니다.
예제: 서식 있는 텍스트 추가
# 서식 있는 텍스트 추가
paragraph = doc.add_paragraph()
run = paragraph.add_run("이것은 굵은 글씨로 표시됩니다.")
run.bold = True
run = paragraph.add_run(" 그리고 이것은 이탤릭체입니다.")
run.italic = True
# 저장
doc.save("formatted_text.docx")
print("서식 있는 텍스트가 포함된 문서가 저장되었습니다.")
위 코드는 add_run()
을 사용해 텍스트에 개별적으로 서식을 적용하는 방법을 보여줍니다.
4. 표 추가
Word 문서에 표를 추가하여 데이터를 정리된 형식으로 표시할 수 있습니다.
예제: 표 생성
# 표 추가
table = doc.add_table(rows=3, cols=3)
table.style = "Table Grid"
# 표 데이터 채우기
for row in table.rows:
for cell in row.cells:
cell.text = "데이터"
# 저장
doc.save("document_with_table.docx")
print("표가 포함된 문서가 저장되었습니다.")
위 코드는 3x3 크기의 표를 생성하고 각 셀에 텍스트를 추가합니다.
5. 이미지 삽입
Word 문서에 이미지를 삽입하여 시각적인 요소를 추가할 수 있습니다.
예제: 이미지 삽입
# 이미지 삽입
doc.add_picture("example.jpg", width=Inches(2.0))
# 저장
doc.save("document_with_image.docx")
print("이미지가 포함된 문서가 저장되었습니다.")
위 코드에서는 add_picture()
를 사용해 이미지를 삽입합니다.
width
와 height
를 사용하여 이미지 크기를 조정할 수 있습니다.
6. 템플릿 기반 문서 생성
기존 템플릿 문서를 불러와 내용을 수정하거나 새 데이터를 추가할 수 있습니다.
예제: 템플릿 수정
# 기존 문서 로드
template_doc = Document("template.docx")
# 텍스트 추가
template_doc.add_paragraph("이 텍스트는 기존 템플릿에 추가된 내용입니다.")
# 저장
template_doc.save("updated_template.docx")
print("템플릿 문서가 업데이트되었습니다.")
위 코드는 기존 템플릿 문서를 수정하고 새 텍스트를 추가합니다.
7. 자동화된 문서 생성 예제
다음은 특정 데이터 리스트를 사용하여 반복적으로 Word 문서를 생성하는 자동화 예제입니다.
예제: 자동화된 보고서 생성
# 데이터 리스트
data_list = [
{"이름": "김철수", "성적": 85, "등급": "B"},
{"이름": "박영희", "성적": 92, "등급": "A"},
{"이름": "이민수", "성적": 78, "등급": "C"},
]
# 문서 생성 및 데이터 추가
for data in data_list:
report = Document()
report.add_heading(f"{data['이름']}님의 성적 보고서", level=1)
report.add_paragraph(f"성적: {data['성적']}")
report.add_paragraph(f"등급: {data['등급']}")
report.save