본문 바로가기
Python - 자동화

[17편] 엑셀 차트를 PDF & PNG 이미지로 자동 저장하기 - 고화질 보고서용 자료 추출

by ramzee 2025. 5. 17.

1. 왜 이걸 해야 할까?

엑셀로 자동 생성한 차트를 슬라이드, 보고서, 메일에 넣으려면 고화질 이미지로 추출하는 것이 좋습니다.

이번 편에서는 차트를 PDF로 저장한 후 300DPI PNG 이미지로 자동 변환해봅니다.

✅ 고화질 PNG 생성 가능 ✅ 각 차트가 자동으로 반복 처리 ✅ 시각적 자료로 활용도 100% ---

2. 설치해야 할 패키지

라이브러리 용도
xlwings 엑셀 자동 조작 (차트 복사/붙여넣기)
PyMuPDF (fitz) PDF → 이미지 변환
Pillow (PIL) 이미지 저장
pandas (기본) 데이터 조작
(이번 편에서는 사용 X)

3. 실습 준비

- 대상 파일: sample1_부서별차트_색상보조축.xlsx - 저장 폴더: chart_images 자동 생성됨 ---

4. 전체 실습 코드

import xlwings as xw
from pathlib import Path
import fitz  # PyMuPDF
from PIL import Image

# 1. 경로 설정
file_path = Path('C:/Users/YourName/Desktop/엑셀자동화/sample1_부서별차트_색상보조축.xlsx')
save_folder = Path('C:/Users/YourName/Desktop/엑셀자동화/chart_images')
save_folder.mkdir(parents=True, exist_ok=True)

# 2. 엑셀 앱 실행
app = xw.App(visible=False)
wb = app.books.open(str(file_path))
sheet = wb.sheets[0]
chart_objects = sheet.api.ChartObjects()

print(f"📊 차트 개수: {chart_objects.Count}")

# 3. 차트 반복 처리 (PDF 저장)
for i in range(chart_objects.Count):
    try:
        chart = chart_objects.Item(i + 1).Chart
        chart.CopyPicture()

        temp_wb = app.books.add()
        temp_sheet = temp_wb.sheets[0]
        temp_sheet.activate()
        temp_sheet.api.Paste()

        pdf_path = save_folder / f'chart_{i+1}.pdf'
        temp_wb.to_pdf(str(pdf_path))

        temp_wb.close()
        print(f"✅ chart_{i+1}.pdf 저장 완료")
    except Exception as e:
        print(f"⚠️ chart_{i+1} PDF 저장 실패: {e}")

wb.close()
app.quit()
print("📁 모든 차트 PDF 저장 완료")

# 4. PDF → PNG 변환
pdf_files = list(save_folder.glob("chart_*.pdf"))

for pdf_file in pdf_files:
    doc = fitz.open(pdf_file)
    page = doc.load_page(0)
    pix = page.get_pixmap(dpi=300)
    img = Image.frombytes("RGB", [pix.width, pix.height], pix.samples)
    png_path = pdf_file.with_suffix('.png')
    img.save(png_path)
    print(f"🖼️ {png_path.name} 생성 완료")

print("✅ 모든 PNG 이미지 저장 완료")

---

5. 실행 결과

생성 파일 설명 / 위치
chart_1.pdf 엑셀 차트를 PDF로 저장 (임시파일)
chart_1.png PDF를 변환한 고해상도 PNG 이미지 (300DPI)

6. 실무 활용 팁

  • 이미지로 저장된 차트는 PPT, 메일, Word 등에 바로 삽입 가능
  • PNG는 압축률이 좋고 글씨가 선명해서 프레젠테이션에 최적
  • PDF → PNG 방식은 벡터 기반으로 훨씬 더 깨끗한 결과 제공