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 방식은 벡터 기반으로 훨씬 더 깨끗한 결과 제공
'Python - 자동화' 카테고리의 다른 글
[20편] 워드 문서 자동 생성하기 - 엑셀 기반 계약서/레터 자동화 실전편 (0) | 2025.05.20 |
---|---|
[19편] 엑셀 데이터 기반 파워포인트 자동 생성 - 텍스트 + 표 자동 삽입 보고서 (0) | 2025.05.19 |
[16편] 부서별 차트 색상 자동 지정하기 - 시각적 보고서 품질 향상하기 (0) | 2025.05.16 |
[15편] 한 번에 여러 개의 엑셀 차트 자동 생성하기 - 부서별 보고서 실전 자동화 (0) | 2025.05.15 |
[14편] 엑셀 파일을 직접 열어 "부서별 매출액 그래프" 자동 생성하기 - 실무용 엑셀 자동화 실습 (0) | 2025.05.14 |