[Python] openpyxl을 이용한 데이터 가공 및 엑셀 꾸미기

[Python] openpyxl을 이용한 데이터 가공 및 엑셀 꾸미기

파이썬으로 엑셀 데이터를 가져와보자

개인적으로 pandas와 openpyxl을 병행해서 사용하는 편인데, 데이터를 읽어올 때는 pandas를 사용해서 읽어오고, 엑셀로 저장할 때는 openpyxl을 사용해서 이렇게 저장한다.

pandas를 이용한 데이터 읽어오기

import pandas as pd

# xlsx 데이터 파일 읽어오기.
FILE_PATH = 'sample.xlsx'
df = pd.read_excel(FILE_PATH)

# 각 열의 0번 째 컬럼값을 가져오고 싶을 때
for row in range(len(df)):
    val = str(df.values[row][0])

openpyxl을 이용한 데이터 저장

import openpyxl
from openpyxl import Workbook

# 엑셀파일 만들고 열기.
wb = Workbook()
sheet = wb.active

sheet.append(['컬럼1', '컬럼2', ...])
for i in 특정 파일:
    sheet.append(['값1', '값2', ...])

# 저장
wb.save('save_sample.xlsx')

특별히 어려운 부분은 없다.

특정 셀에 색깔 입히기

특히나 엑셀에 특정 셀에 색깔을 넣고 싶을 때, openpyxl을 사용하면 편하기 때문에 openpyxl로 엑셀 데이터를 저장하기 위해 많이 쓰는 편이다.

from openpyxl.styles import PatternFill, Color


for j in range(ROW_LENGTH):
  sheet.cell(row=1, column=j).fill = PatternFill(start_color='808080', end_color='808080', fill_type='solid')

이렇게 작성하면, 첫 번째 행에서 모든 칼럼을 808080 값으로 바꾸겠다는 뜻이다. 이 숫자는 RGB값이며, 회색이다. 보통 이 색깔을 첫 줄에 각 칼럼에 대한 설명을 칠할 때 쓴다.

image-center

또한 특정 색상은 기본적으로 제공을 하기 때문에 이렇게도 쓸 수 있다.

from openpyxl.styles import PatternFill, Color
from openpyxl.styles.colors import GREEN, YELLOW

sheet.cell(row=2, column=1).fill = PatternFill(start_color=YELLOW, end_color=YELLOW, fill_type='solid')

이렇게 하면 두 번째 줄의 첫 번째 셀은 노란색으로 바뀐다.