파이썬 사용해서 엑셀 파일 만들기

TIL 카테고리의 글은 그날 배운 것을 정리하는 목적으로 포스팅합니다. 내용이 잘못되었다면 댓글로 피드백 부탁드립니다.

엑셀 파일을 만들 수 있는 파이썬 라이브러리는 대표적으로 openpyxlxlsxwriter 가 있는데 저는 wlsxwriter 를 사용했다. (보통 openpyxl을 더 쓰는 것 같은데 나는 wlsxwriter 예제를 처음 접해서 사용했다. )

엑셀 파일 만들기

아래 코드는 간단한 엑셀 파일을 만드는 코드이다.

1
2
3
4
5
6
7
8
import xlsxwriter

file_name = 'test.xlsx' # 엑셀 파일 이름
workbook = xlsxwriter.Workbook(file_name)
ws = workbook.add_worksheet()

ws.write(0, 0, 'Hello') # A1에 값을 넣음
ws.close() # 저-장 

같은 디렉토리에 test.xlsx 파일이 생성된 것을 확인할 수 있다.

이미지 삽입하기

image url로 requests를 통해 이미지를 가져온 뒤 이미지도 삽입되어있는 파일을 만들어 보았다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
from io import BytesIO
  
import requests
import xlsxwriter


image_url =
'https://d3mcojo3jv0dbr.cloudfront.net/2019/03/23/14/25/d88f24f059169559602c836fc35b995c.jpeg?w=128&h=128&q=65'

workbook = xlsxwriter.Workbook('text.xlsx')
ws = workbook.add_worksheet()

ws.set_column(0, 0, 100) # column width 설정 
ws.set_column(1, 1, 100) # column width 설정 
ws.set_default_row(100) # row height 설정

ws.write(0, 0, '어피치') # A1 

res = requests.get(image_url) # 이미지 가져옴
image_data = BytesIO(res.content) # 이미지 파일 처리

image_size = len(image_data.getvalue()) # 이미지 사이즈 
if image_size > 0: # 이미지가 있으면 
    ws.insert_image('B1', image_url, {'image_data': image_data}) # 엑셀에 삽입함


workbook.close() # 저장 

이미지 사이즈를 체크하여 이미지가 있는지 확인한 후 엑셀에 삽입하는 이유는 이미지가 없는데 inser_image를 시도하면 오류가 나기 때문이다.

1
struct.error: unpack requires a bytes object of length 3 image

(이 오류때문에 반나절 삽질했다 ㅂㄷㅂㄷ) 해당 오류 이슈

이렇게 파이썬으로 엑셀 파일 만드는 것을 자동화하여 생산성을 높일 수 있다.

refer

xlsxwriter 사용법

xlsxwriter document

엑셀 이미지 삽입하기