pandas, openpyxl, xlrd, xlutils, pyexcel 등 파이썬에서 엑셀을 다룰 수 있는 다양한 패키지가 있습니다. 여기서는 openpyxl을 이용해 엑셀 파일을 열고 쓰는 방법을 알아보겠습니다. 1
아래와 같이 openpyxl를 설치합니다.
pip install openpyxl
엑셀파일 읽어들이기
샘플 데이터로 굿뉴스 성인 목록 중 대천사 6명의 데이터만 가져와봤습니다. 2
번호 | 구분 |
성인명 | 영어명 | 축일 | 신분 | 연도 |
1 | 천사 | 가브리엘 | Gabriel | 9월29일 | 대천사 | +연대미상 |
2 | 천사 | 가브리엘라 | Gabriela | 9월29일 | 대천사 | +연대미상 |
3 | 천사 | 라파엘 | Raphael | 9월29일 | 대천사 | +연대미상 |
4 | 천사 | 라파엘라 | Raphaela | 9월29일 | 대천사 | +연대미상 |
5 | 천사 | 미카엘 | Michael | 9월29일 | 대천사 | +연대미상 |
6 | 천사 | 미카엘라 | Michaela | 9월29일 | 대천사 | +연대미상 |
위의 데이터를 angel.xslx로 저장한 뒤 데이터를 불러와보겠습니다.
#파일을 읽어들이는 내장함수인 load_workbook을 불러옵니다.
from openpyxl import load_workbook
#파일이름이 angel.xlsx인 파일을 불러옵니다.
angelEx=load_workbook(filename='angel.xlsx')
#불러온 엑셀 파일 중 데이터를 찾을 sheet의 이름을 입력합니다.
sheet1 = angelEx['Sheet1']
#활성화되어 있는 시트를 찾습니다.
sheet2 = angelEx.active
#Sheet1의 D4의 값을 출력합니다.
print(sheet1['D4'].value)
print(sheet2['D4'].value)
#특정 범위의 데이터(번호와 성인명)만 불러오겠습니다.
angels = []
#루프문을 이용해 sheet의 여러 행에 있는 데이터를 불러옵니다.
for i in sheet1.rows:
번호 = i[0].value
성인명 = i[2].value
angel = (번호, 성인명)
angels.append(angel)
print(angels)
Raphael
Raphael
[('번호', '성인명'), (1, '가브리엘'), (2, '가브리엘라'), (3, '라파엘'), (4, '라파엘라'), (5, '미카엘'), (6, '미카엘라')]
iter_rows() 와 iter_column()를 이용해서도 특정 범위의 셀에 접근할 수 있습니다.
allData =[]
for row in sheet1.iter_rows(min_row=2, max_col=3, max_row=4):
a = []
for cell in row :
a.append(cell.value)
allData.append(a)
print(allData)
[[1, '천사', '가브리엘'], [2, '천사', '가브리엘라'], [3, '천사', '라파엘']]
min_row, max_row, min_col, max_col을 이용해 시작행과 마지막 행, 시작 열과 마지막 열을 지정해줍니다. 해당 조건을 빼면 모든 행렬의 데이터를 불러올 수 있습니다.
엑셀파일로 쓰고 저장하기
from openpyxl import Workbook
wb = Workbook()
#파일 이름을 정하고, 데이터를 넣을 시트를 활성화합니다.
sheet1 = wb.active
file_name = 'sample.xlsx'
#시트의 이름을 정합니다.
sheet1.title = 'sampleSheet'
abc = ['A','B','C','D','E','F','G','H','I','J','K','L']
#cell 함수를 이용해 넣을 데이터의 행렬 위치를 지정해줍니다.
for row_index in range(1, 11):
sheet1.cell(row=row_index, column=1).value = row_index
sheet1.cell(row=row_index, column=2).value = abc[(row_index-1)]
wb.save(filename=file_name)
1 |
A |
2 |
B |
3 |
C |
4 |
D |
5 |
E |
6 |
F |
7 |
G |
8 |
H |
9 |
I |
10 |
J |
-------------------------------
엑셀 파일의 데이터를 읽고 쓰는 방법을 다루어 보았습니다. 앞서 배운 크롤링과 연계하면 굉장히 유용하게 쓰일 듯 합니다!
- https://openpyxl.readthedocs.io/en/stable/usage.html [본문으로]
- http://maria.catholic.or.kr/sa_ho/list/list.asp?menugubun=saint&today=&today_tmp=&ctxtCommand=&ctxtLogOn=&ctxtSexcode=&ctxtChukday=&ctxtGaladay=&Orggubun=101&ctxtHigh=&ctxtLow=&ctxtChecked=Checked&oldrow=&curpage=1&ctxtOrder=++name1%2Cgaladaym%2Cgaladayd+&ctxtOrderType=&ctxtSaintId=&ctxtSCode=5&ctxtSearchNm=&ctxtChukmm=&ctxtChukdd=&ctxtPosition=&ctxtCity=&PSIZE=20 [본문으로]
반응형