보고서 차트 만들기 끝! 파이썬으로 엑셀 데이터를 차트 이미지로 자동 저장하기

보고서 차트 만들기 끝! 파이썬으로 엑셀 데이터를 차트 이미지로 자동 저장하기 (완성 코드 공개)

파이썬으로 엑셀 데이터를 차트 이미지로 자동 저장하는 모습


"1월 매출 123만원, 2월 매출 145만원, 3월 매출 98만원…"

매달 엑셀 데이터를 보고 차트를 직접 만들고, 이미지로 저장해서 PPT나 보고서에 붙여넣는 작업을 반복하고 있지는 않으신가요? 데이터가 바뀔 때마다 차트를 다시 그리고, 크기를 맞추고, 다시 저장하는 과정은 단순하지만 생각보다 많은 시간을 잡아먹습니다. 파이썬을 한 번만 세팅해두면 엑셀 파일을 읽어 차트를 자동으로 그리고 이미지 파일로 저장하는 작업을 10초 만에 끝낼 수 있습니다.


1단계: 준비물 설치

파이썬이 설치되어 있어야 합니다. 없다면 python.org에서 최신 버전을 받아 설치하세요. 설치 시 반드시 "Add Python to PATH"에 체크해야 합니다.

차트 생성에 필요한 라이브러리 두 가지를 설치합니다. 터미널(윈도우: CMD 또는 파워셸)을 열고 아래 명령어를 실행하세요:

pip install pandas openpyxl matplotlib

pandas는 엑셀 데이터를 읽는 라이브러리이고, openpyxl은 .xlsx 파일을 처리하는 엔진입니다. matplotlib은 차트를 그리고 이미지로 저장하는 라이브러리입니다. 세 가지 모두 무료이며 설치 명령어 한 줄로 한꺼번에 설치됩니다.

💡 이 코드로 할 수 있는 것: 엑셀 파일에서 지정한 두 열(항목명, 수치)을 읽어 막대 차트 또는 꺾은선 차트를 자동으로 그리고 PNG 이미지로 저장합니다. 데이터만 바꾸면 차트가 자동으로 업데이트됩니다.

2단계: 엑셀 파일 준비

코드를 실행하기 전에 엑셀 파일을 아래 형식으로 준비합니다. 1행은 반드시 헤더(열 이름)로, 2행부터 실제 데이터를 입력합니다.

A열(항목)    B열(수치)
----------------------------
1월          1230000
2월          1450000
3월          980000
4월          1620000
5월          1380000

열 이름은 자유롭게 바꿀 수 있습니다. 코드에서 열 이름을 지정하기 때문에 "월별매출", "지점명", "수량" 등 어떤 이름을 사용해도 됩니다.


3단계: 완성 코드

아래 코드를 그대로 복사해서 메모장에 붙여넣고, make_chart.py로 저장하세요. 저장 시 파일 형식은 "모든 파일", 인코딩은 UTF-8로 설정합니다.

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
from pathlib import Path

# ① 설정: 파일 경로와 열 이름
EXCEL_PATH  = r"C:\Users\내이름\Desktop\매출데이터.xlsx"  # ← 본인 엑셀 파일 경로
OUTPUT_PATH = r"C:\Users\내이름\Desktop\매출차트.png"     # ← 저장할 이미지 경로
X_COLUMN    = "항목"    # ← 가로축(항목명)으로 쓸 열 이름
Y_COLUMN    = "수치"    # ← 세로축(수치)으로 쓸 열 이름
CHART_TYPE  = "bar"     # ← "bar"(막대) 또는 "line"(꺾은선) 선택
CHART_TITLE = "월별 매출 현황"   # ← 차트 제목

# ② 한글 폰트 설정 (윈도우 기준)
font_path = "C:/Windows/Fonts/malgun.ttf"   # 맑은 고딕
if Path(font_path).exists():
    font = fm.FontProperties(fname=font_path)
    plt.rcParams["font.family"] = font.get_name()
plt.rcParams["axes.unicode_minus"] = False  # 마이너스 기호 깨짐 방지

# ③ 엑셀 읽기
df = pd.read_excel(EXCEL_PATH, engine="openpyxl")
print(f"  ✔ 데이터 로드 완료: {len(df)}행")

# ④ 차트 그리기
fig, ax = plt.subplots(figsize=(10, 6))

if CHART_TYPE == "bar":
    ax.bar(df[X_COLUMN], df[Y_COLUMN], color="#4a90d9", edgecolor="white")
elif CHART_TYPE == "line":
    ax.plot(df[X_COLUMN], df[Y_COLUMN], marker="o", color="#4a90d9", linewidth=2)

ax.set_title(CHART_TITLE, fontsize=16, pad=15)
ax.set_xlabel(X_COLUMN, fontsize=12)
ax.set_ylabel(Y_COLUMN, fontsize=12)
ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, _: f"{int(x):,}"))
ax.grid(axis="y", linestyle="--", alpha=0.5)
plt.tight_layout()

# ⑤ 이미지로 저장
plt.savefig(OUTPUT_PATH, dpi=150, bbox_inches="tight")
print(f"\n✅ 완료! 차트 이미지 저장 → {OUTPUT_PATH}")

4단계: 실행 방법

  1. 엑셀 파일을 준비하고 코드 ① 설정의 EXCEL_PATH에 파일 경로를 입력합니다.
  2. OUTPUT_PATH에 저장할 이미지 파일 경로를 입력합니다.
  3. X_COLUMNY_COLUMN에 엑셀 헤더 이름을 정확히 입력합니다.
    💡 팁: 엑셀 파일을 열어 1행에 적힌 열 이름을 그대로 복사하면 오타를 방지할 수 있습니다.
  4. 터미널에서 아래 명령어로 실행합니다:
python make_chart.py

정상 실행 시 터미널에 이렇게 출력됩니다:

  ✔ 데이터 로드 완료: 5행

✅ 완료! 차트 이미지 저장 → C:\Users\내이름\Desktop\매출차트.png

지정한 경로에 PNG 이미지 파일이 생성됩니다. 이 이미지를 바로 PPT, 워드, 카카오톡 등에 붙여넣을 수 있습니다.


5단계: 자주 발생하는 오류와 해결법

오류 1: KeyError: '항목'

코드의 X_COLUMN에 입력한 열 이름이 엑셀 헤더와 정확히 일치하지 않을 때 발생합니다. 엑셀 1행의 열 이름을 다시 확인하세요. 공백이 한 칸이라도 다르면 오류가 납니다.

오류 2: 차트에 한글이 깨져서 네모(□)로 표시됨

코드 ② 한글 폰트 설정에서 지정한 폰트 경로가 없을 때 발생합니다. 윈도우 탐색기에서 C:\Windows\Fonts\malgun.ttf 파일이 실제로 존재하는지 확인하세요. 파일이 없다면 gulim.ttc 또는 batang.ttc로 바꿔서 시도해보세요.

오류 3: ModuleNotFoundError: No module named 'matplotlib'

설치가 제대로 되지 않은 경우입니다. 아래 명령어로 다시 시도하세요.

python -m pip install pandas openpyxl matplotlib

응용: 막대와 꺾은선을 동시에 표시하고 싶다면

매출 수치는 막대로, 전월 대비 증감률은 꺾은선으로 함께 표시하는 이중 차트도 만들 수 있습니다. 코드 ④ 차트 그리기 부분을 아래처럼 교체하세요. 엑셀에 "수치2" 열이 추가로 있어야 합니다.

Y_COLUMN2 = "증감률"   # ← 꺾은선으로 표시할 두 번째 열 이름

fig, ax1 = plt.subplots(figsize=(10, 6))

ax1.bar(df[X_COLUMN], df[Y_COLUMN], color="#4a90d9", label=Y_COLUMN)
ax1.set_ylabel(Y_COLUMN, fontsize=12)

ax2 = ax1.twinx()   # 오른쪽에 두 번째 Y축 추가
ax2.plot(df[X_COLUMN], df[Y_COLUMN2], marker="o", color="#e84c3d", linewidth=2, label=Y_COLUMN2)
ax2.set_ylabel(Y_COLUMN2, fontsize=12)

ax1.set_title(CHART_TITLE, fontsize=16, pad=15)
fig.legend(loc="upper left", bbox_to_anchor=(0.1, 0.9))
plt.tight_layout()
💡 매달 반복되는 보고서 작업이라면: 엑셀 데이터만 새 내용으로 업데이트하고 스크립트를 실행하면 차트 이미지가 자동으로 덮어씌워집니다. 이전 게시글 엑셀 파일 자동 병합 편과 결합하면 여러 파일을 합친 뒤 바로 차트까지 자동 생성하는 것도 가능합니다.

핵심 요약

  • 준비물: Python + pandas + openpyxl + matplotlib 설치 (pip install pandas openpyxl matplotlib)
  • 설정: 엑셀 파일 경로, 저장 경로, 열 이름, 차트 종류만 수정
  • 실행: 터미널에서 python make_chart.py 입력
  • 결과: 엑셀 데이터가 차트 PNG 이미지로 자동 저장, 보고서에 바로 삽입 가능

이 코드를 응용하면 파이 차트(원형 차트), 여러 시트의 데이터를 한 번에 차트로 변환하는 것도 가능합니다.

이 블로그의 인기 게시물

카카오톡 용량 줄이기! 대화방 파일 삭제로 스마트폰 용량 확보법 (1분 해결)

느려진 구글 크롬 속도 2배 빨라지는 3가지 설정 방법 (2026년 최신 가이드)

업무 속도 3배 빨라지는 윈도우 기본 캡처 도구 단축키 및 200% 활용 꿀팁