본문 바로가기
Python - 자동화

[20편] 워드 문서 자동 생성하기 - 엑셀 기반 계약서/레터 자동화 실전편

by ramzee 2025. 5. 20.

1. 왜 이걸 해야 할까?

팀원, 고객, 파트너 등에게 비슷한 내용의 워드 문서를 반복해서 작성하고 있다면?

엑셀의 데이터를 바탕으로 각각 다른 이름, 부서, 금액 등을 워드에 자동으로 삽입해서 개별 문서를 생성할 수 있습니다.

  • ✅ 계약서, 안내문, 경고장, 초대장, 증명서 자동화 가능
  • ✅ 반복 업무 → 1초 자동 생성으로 전환
  • ✅ 이름만 바뀌는 문서라면 무조건 추천!

2. 설치할 패키지 및 용도

pip install python-docx pandas openpyxl
라이브러리 용도
python-docx 워드 문서 생성 및 텍스트 삽입
pandas 엑셀 데이터 불러오기 및 처리
openpyxl 엑셀(.xlsx) 파일 처리 지원

3. 실습 준비

  • 엑셀 파일: sample_contract_data.xlsx
  • 열 구성: 이름, 부서, 계약금액, 계약일자
  • 출력 파일: 이름_계약서.docx

문서 템플릿 예시

{{이름}} 님께,

귀하는 {{부서}} 소속으로, 아래 조건에 따라 계약이 체결되었음을 안내드립니다.

- 계약 금액: {{계약금액}} 원
- 계약 일자: {{계약일자}}

감사합니다.
        

4. 전체 코드

import pandas as pd
from docx import Document
from pathlib import Path

# 1. 엑셀 경로 & 저장 폴더
excel_path = Path("C:/Users/YourName/Desktop/엑셀자동화/sample_contract_data.xlsx")
save_folder = Path("C:/Users/YourName/Desktop/워드자동생성")
save_folder.mkdir(parents=True, exist_ok=True)

# 2. 엑셀 데이터 불러오기
df = pd.read_excel(excel_path)

# 3. 템플릿 문장
template = """{{이름}} 님께,

귀하는 {{부서}} 소속으로, 아래 조건에 따라 계약이 체결되었음을 안내드립니다.

- 계약 금액: {{계약금액}} 원
- 계약 일자: {{계약일자}}

감사합니다."""

# 4. 반복 처리하여 워드 문서 생성
for i, row in df.iterrows():
    text = template
    for col in df.columns:
        value = str(row[col])
        text = text.replace(f"{{{{{col}}}}}", value)

    doc = Document()
    for line in text.split("\n"):
        doc.add_paragraph(line)

    filename = f"{row['이름']}_계약서.docx"
    doc.save(save_folder / filename)
    print(f"✅ 생성 완료: {filename}")

5. 결과 예시

파일명 설명
김하늘_계약서.docx 김하늘 님의 계약 문서
이서준_계약서.docx 이서준 님의 계약 문서

6. 실무 확장 팁

  • 템플릿 문장을 별도 .txt 파일로 분리하여 재활용 가능
  • 문서에 표/이미지/서명 추가도 가능 (python-docx)
  • 경력증명서, 안내문, 발령장, 교육수료증 등에 확장 가능