TIL(Today I Learn)
[Python]파이썬으로 엑셀 데이터 다루기_openpyxl 라이브러리
어둠의 그림자
2022. 7. 13. 20:10
파이썬으로 단순하게 open 함수로 엑셀파일을 열고 데이터를 다룰수도있겠지만
구글링을 해보니 엑셀 전용 라이브러리가 있었다!
해당 라이브러리로 엑셀 데이터를 정리해보았는데
나중에도 써먹으려고 기록해보려 한다ㅎ-ㅎ
1. 엑셀 새로 생성하기
전체적인 틀은 다음과 같다
#필요한 import 구문
from openpyxl import Workbook
newWb = Workbook()
tmpWb = newWb.create_sheet('new Sheet')
tmpWb = newWb.active
tmpWb.append(넣어줄 정보)
여기서 넣어줄 정보는 행단위로 넣어줄수도 있고 열단위로 넣어줄수도있다
이게 진짜 대박이다 내 작업시간 지킴이 ;ㅁ;
자세한건 밑에서 실제 데이터로 넣어보겠다
2. 기존 엑셀 열기
#필요한 import 구문
from openpyxl import load_workbook
loadWb = load_workbook('열고 싶은 엑셀파일의 상대경로', data_only=True)
loadWb = load_wb['시트1']#시트이름
#데이터 불러오기1_행,열 단위로
for i in loadWb.rows:
print(i)#행 단위로 출력
for i in loadWb.columns:
print(i)#열 단위로 출력
#데이터 불러오기2_cell 단위로
loadWb[B2].value #B2 셀에있는 데이터를 가져온다
loadWb[B2:B6].value #이런식으로 리스트 인덱싱처럼 사용도 가능
loadWb.cell(i,j).value #i행 j열에 있는 셀의 데이터를 가져온다
3. 실제 활용
내가 하고싶은것은 /로 구분된 정보들을 엑셀파일로 정리하는것이다
ex) 이름/전화번호/비고 <- 이 string 데이터들을 엑셀파일에 표처럼 정리하기!
from openpyxl import load_workbook,Workbook
def removeSlash(str):
ans = str.split('/')
return ans
load_wb = load_workbook('string 엑셀시트.xlsx', data_only=True)
load_ws = load_wb['시트1']
write_wb = Workbook()
write_ws = write_wb.create_sheet('새로운 시트')
write_ws = write_wb.active
i_list = [1,3,5,7]#정보가 있는 열
for i in range(2,15):#정보가 있는 행
for j in i_list:
people = load_ws.cell(i,j).value
if people:
people = removeSlash(people)
write_ws.append(people)
write_wb.save("정리된 string.xlsx")
+ 오류목록
PermissionError: [Errno 13] Permission denied: '엑셀파일이름.xlsx'
오류원인) 엑셀파일이 열려있어서 접근이 안되어있던것!
엑셀파일을 닫아주면 가능하다~.~
FileNotFoundError: [Errno 2] No such file or directory: '엑셀파일이름.xlsx'
오류원인) 파일위치를 못찾았다 ; 상대경로 혹은 절대경로 입력방식이 잘못됐다!
vscode의 경우 경로를 복사할수있으므로 이 기능을 적극 활용하자