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
)
- 경력증명서, 안내문, 발령장, 교육수료증 등에 확장 가능