본문 바로가기
Python - 자동화

[15편] 한 번에 여러 개의 엑셀 차트 자동 생성하기 - 부서별 보고서 실전 자동화

by ramzee 2025. 5. 15.

1. 왜 이걸 해야 할까?

매출 데이터가 부서별로 나뉘어 있는 경우, 부서마다 개별 차트를 만들어야 할 때가 많습니다.

하지만 일일이 차트를 복사하고 수정하는 건 번거롭고 오류도 많죠.

✅ 이번에는 부서별로 자동으로 차트를 여러 개 생성하고 ✅ 보기 좋게 엑셀 내에 정렬하는 방법을 배워봅니다! ---

2. 사용할 라이브러리

pip install pandas xlwings

- pandas : 데이터 그룹화 - xlwings : 엑셀 차트 자동 삽입 ---

3. 실습 목표

  • 파일명: sample1.xlsx
  • 내용: 부서, 이름, 매출액, 프로젝트 수 등
  • 목표: 부서별 매출액 + 프로젝트 수 차트를 각각 만들기

---

4. 샘플 데이터 예시

이름 부서 직급 입사년도 매출액 성과등급 프로젝트수 근무지역
유서연 재무부 사원 2016 1991549 B 8 부산
백서준 개발부 사원 2021 2306411 A 7 부산
조지우 영업부 부장 2015 2388898 B 4 대구
홍서윤 개발부 차장 2018 1325355 B 2 서울

---

5. 전체 코드

import pandas as pd
import xlwings as xw

# 1. 경로 설정
file_path = 'C:/Users/YourName/Desktop/엑셀자동화/sample1.xlsx'
save_path = 'C:/Users/YourName/Desktop/엑셀자동화/sample1_부서별차트.xlsx'

# 2. 데이터 로드
df = pd.read_excel(file_path)

# 3. 엑셀로 저장 (정리용)
df.to_excel(save_path, index=False)

# 4. 엑셀 열기
app = xw.App(visible=True)
wb = app.books.open(save_path)
sheet = wb.sheets[0]

# 5. 부서별 데이터 분리 및 차트 생성
unique_depts = df['부서'].unique()
start_row = df.shape[0] + 5  # 기존 데이터 아래에서 시작
col_offset = 0

for dept in unique_depts:
    temp_df = df[df['부서'] == dept][['이름', '매출액', '프로젝트수']]

    # 데이터 입력
    row_offset = start_row + 20 * list(unique_depts).index(dept)
    sheet.range(f'A{row_offset}').value = temp_df

    # 데이터 범위
    data_range = sheet.range(f'A{row_offset}').expand()

    # 차트 삽입
    chart = sheet.charts.add()
    chart.chart_type = 'column_clustered'
    chart.set_source_data(data_range)
    chart.top = data_range.top
    chart.left = data_range.left + 300
    chart.width = 400
    chart.height = 300

    print(f"✅ {dept} 차트 생성 완료")

# 6. 저장 및 종료
wb.save()
wb.close()
app.quit()
print("🎉 부서별 차트 자동 생성 완료")

---

6. 실행 결과

- 엑셀 창이 열리고, - 각 부서별로 데이터 표 + 막대그래프가 생성됩니다. - 차트는 자동으로 보기 좋게 나란히 배치됩니다. ---

7. 주의사항

  • 엑셀(MS Office)이 설치된 PC에서만 작동합니다.
  • 파일 경로는 슬래시(/)로 표기하세요.
  • 데이터가 너무 많을 경우 차트 위치가 겹치지 않도록 row_offset을 늘려야 합니다.

---

8. 실무 활용 팁

- 부서 외에도 '직급', '근무지역' 등으로 응용할 수 있습니다. - 파워포인트 자동화와 연결하면 부서별 보고서 자동 작성도 가능합니다. - 컬러/폰트 등도 엑셀 차트 속성으로 자동 제어 가능합니다