파이썬으로 엑셀 다루기(사용자에게 값 받고 찾아주기)
저번 시간에 출력하는 것 까지 해보았다.
이번에는 값을 찾아보는 것까지 도전해보도록 하겠다.
일단 값을 비교하기 위해서는 eq함수를 알아야 한다.
eq를 사용하기 위해서는 operator라는 모듈을 불러와야 한다.
eq를 사용하여 값 비교하기
operator(비교값 1, 비교값 2)
결과는 같을 경우 True, 다를 경우 False를 return 해준다.
ex)
import operator
a= 123
b=456
operator.eq(a,b)
결과)
다음과 같이 나온다.
이제 값을 받아 그 값이 나오는지 확인해보자
우선 num 값과 찾을 값을 적자
우선 C열에서 8080이라고 적혀있는 값을 찾고 싶다.
다음으로 for문을 돌려 시트 안 C열에 있는 값을 찾는다.
<코드>
for i in sheet.rows :
if(operator.eq(i[num-1].value, find)) :
print(i[num-1])
eq를 사용하여 C열에 있는 값과 내가 입력한 값과 비교를 하고 만약 값이 같을 경우 그 셀을 출력한다.
<결과>
'handsome_guencheol' sheet안에서 C열 17행에 내가 입력한 8080이 있다고 나왔다.
확인을 해보도록 하겠다.
보면 C열 17행에 8080이라는 값이 있다.
이제 값을 입력받아 찾는 것 까지는 해결했다.
다음으로 해야할 것은 찾은 행에 있는 값을 모두 출력해 줘야한다.
그래서 사용하는게 이중 for문이다.
이중 for문은 for문을 두 번 사용하는 것인데 대학교 1학년 때 코딩과 담쌓게 해준 첫번째 친구이다.
안좋은 추억을 가지고 있지만 이중 for문을 사용해 보겠다.
for i in sheet.rows :
if(operator.eq(i[num-1].value, find)) :
for j in range(0,5) :
print(i[j].value)
<코드 해석>
1. if(operator.eq(i[num-1].value, find)) : -> i행 num-1열에 있는 값과 찾고자 하는 값이 같은 경우
2. for j in range(0,5) : -> 열이 A부터 E열까지 존재하므로 범위를 0~5까지 잡음
3. print(i[j].value) -> 찾은 행에 있는 값 모두 출력
<출력결과>
과연 그 값이 엑셀에 있는지 확인 해보겠다.
다음과 같이 희망하는 줄의 값이 나온다.
다음 시간에는 뽑아온 값을 새로운 엑셀 파일에 저장하는 거 해봐야 겠다.