반응형

IT·디지털 자동화 블로그 · 파이썬 엑셀 자동화
왜 거래명세서 자동화인가
거래명세서는 영업팀, 회계팀, 납품 관리 등에서 필수 문서입니다. 그러나 수작업으로 작성할 경우, 거래처마다 데이터를 복사·붙여넣기 해야 하므로 시간이 많이 걸립니다. 파이썬을 이용하면 데이터 파일 한 개로 수십 개 거래명세서를 자동으로 생성할 수 있습니다.
환경 설정
pip install pandas openpyxl
이 두 패키지는 엑셀 데이터를 다루고, 서식을 적용하는 데 필수입니다.
기초 데이터 준비
기본 거래 데이터를 다음과 같이 준비합니다.
📄 sales_data.xlsx
┌────────┬───────────────┬───────┬───────┬───────┐
│ 거래처 │ 품목명 │ 단가 │ 수량 │ 날짜 │
├────────┼───────────────┼───────┼───────┼───────┤
│ A상사 │ 모니터 │ 200000 │ 3 │ 2025-10-28 │
│ B전자 │ 키보드 │ 40000 │ 5 │ 2025-10-28 │
│ A상사 │ 마우스 │ 25000 │ 4 │ 2025-10-29 │
└────────┴───────────────┴───────┴───────┴───────┘
자동 거래명세서 생성
pandas로 데이터를 불러온 뒤, 거래처별로 그룹화(groupby)하여 각각의 엑셀로 저장합니다.
import pandas as pd
from openpyxl import Workbook
from openpyxl.styles import Alignment, Font, Border, Side
import os
# 데이터 불러오기
df = pd.read_excel("sales_data.xlsx")
# 거래처 목록 추출
partners = df["거래처"].unique()
# 저장 폴더 생성
os.makedirs("거래명세서", exist_ok=True)
for partner in partners:
wb = Workbook()
ws = wb.active
ws.title = "거래명세서"
# 헤더
ws.append(["거래처명", partner])
ws.append(["품목명", "단가", "수량", "금액", "날짜"])
ws.merge_cells("A1:E1")
# 데이터 필터링
sub_df = df[df["거래처"] == partner]
for _, row in sub_df.iterrows():
amount = row["단가"] * row["수량"]
ws.append([row["품목명"], row["단가"], row["수량"], amount, row["날짜"]])
wb.save(f"거래명세서/{partner}_거래명세서.xlsx")
print("거래명세서 자동 생성 완료!")
이 스크립트는 거래처별 엑셀 파일을 자동으로 생성하고, 이름을 규칙적으로 지정합니다.
서식 및 디자인 적용
openpyxl 스타일 기능을 이용하면 보고서처럼 깔끔하게 꾸밀 수 있습니다.
thin = Side(style="thin", color="999999")
border = Border(left=thin, right=thin, top=thin, bottom=thin)
align = Alignment(horizontal="center", vertical="center")
for row in ws.iter_rows(min_row=2, max_row=ws.max_row, max_col=5):
for cell in row:
cell.alignment = align
cell.border = border
if cell.column == 4 and isinstance(cell.value, (int, float)):
cell.font = Font(bold=True, color="1E88E5")
이렇게 하면 거래 금액이 강조된 파란색 글씨로 표시되고, 전체 테이블이 중앙 정렬된 형태로 출력됩니다.
거래처별 자동 저장
파일명에 날짜를 포함하면 버전 관리가 용이합니다.
from datetime import datetime
today = datetime.now().strftime("%Y%m%d")
wb.save(f"거래명세서/{partner}_거래명세서_{today}.xlsx")
매일 자동으로 실행되게 설정하면, 회사 거래내역 백업 시스템으로도 활용 가능합니다.
다음 글 예고: 거래명세서 + 이메일 자동 발송 시스템
다음 편에서는 생성된 거래명세서를 이메일에 자동 첨부해 거래처별로 발송하는 코드를 다룹니다.
관련 읽을거리: 엑셀 서식 자동 지정 · 자동 보고서 메일 발송
반응형