본문 바로가기
Programming/Python

[Python] 파이썬 엑셀 이미지 삽입하기

by 코딩하는 금융인 2023. 11. 13.

안녕하세요.

오늘은 파이썬을 활용하여 간단하게 엑셀에 이미지 삽입하는 방법에 대해 알아보겠습니다.

 

 파이썬 Openpyxl Image

▣ Openpyxl 패키지

pip install openpyxl

 

- 파이썬 환경에서 엑셀에 이미지를 삽입하는 방법은 그냥 엑셀 시트에 셀 크기 관계 없이 넣는 방법과 셀 크기에 맞게 넣은 방법 2가지가 있음.

 

1) 엑셀 이미지 삽입하기

- 단순히 폴더에 있는 이미지 파일을 엑셀에 삽입하는 행동을 파이썬으로 구현함.

import openpyxl as op
# 이미지 삽입 위한 모듈 import
from openpyxl.drawing.image import Image

# 엑셀 파일 및 시트 객체 생성하기
wb = op.Workbook()
ws = wb.active # 1번째 시트

# Image 파일 형성
path = r"./1.jpg"
img = Image(path)

# 엑셀 Sheet1 위치[A2]에 해당 이미지 삽입
ws.add_image(img,"A2")
wb.save(r"./test_excel.xlsx")

 

 

: 결과 확인하기

- 이미지 크기가 아래 예시처럼 엄청나게 클 경우, 자동화했을 때 다시 하나하나 다시 셀 크기에 맞게 조정해야 하므로 크기 조절 후 삽입해야함.

엑셀 결과

 

2) 셀 크기 조정해서 다수의 이미지 파일 삽입하기

- 좀 더 현실적인 상황을 위해 다수의 이미지 파일을 특정 크기에 맞춰 엑셀에 넣는 상황을 가정함.

- 엑셀 첫번째 열(A)에는 해당 이미지의 이름과 확장자명을, 두번째 열(B)에는 이미지를 삽입하는 반복문을 구현함.

import os
import openpyxl as op
from openpyxl.drawing.image import Image

wb = op.Workbook()
ws = wb.active

# 경로 설정
img_dir = './images'
img_file_list = os.listdir(img_dir)

# 반복문 만들기
for i, img_file in enumerate(img_file_list):
    image_path = os.path.join(img_dir, img_file)
    image = Image(image_path)
    image.width, image.height = 100, 100 # 크기 설정
    ws.add_image(image, anchor='B' + str(i + 1)) # B열부터 시작
    if i==0: #폭 100 고정
        ws.column_dimensions['B'].width = image.width
    ws.row_dimensions[i+1].height = image.height #높이 100마다 변경
    ws.cell(row=i+1, column=1, value=img_file) #A열에 이미지 생성

wb.save(r"./test_excel2.xlsx")

 

: 결과 확인하기

- 대강 100(폭), 100(높이)으로 설정하면 맞을 줄 알았으나 생각보다 엑셀에서 100의 폭이 큰거를 느낌.

- 특정 크기에 맞춰서 할려면 도형서식에서 크기 확인 후 픽셀 단위에 맞게 넣어줘야 딱 맞춰서 넣을 수 있음.

엑셀 결과2

반응형

댓글