파이썬으로 엑셀 다루기(사용자에게 받은 값의 셀 전체 출력하기)
이제 엑셀 파일을 열고 읽고 쓰고 파일을 저장하는 법을 알았으니 이제 과제 내준 것을 해볼 생각이다.
과제를 요약하자면
* 프로그램 목적 : 검색을 통해 기준에 맞는 행들만 따로 뽑아서 저장.
1. 객관식으로 어느 컬럼(열)의 데이터를 검색할 건지 물어보고 입력값에 따라 해당 열의 데이터를 검색할 것.
2. 검색한 정보가 해당 열에 있으면 해당 정보가 있는 행을 추출하여 파일로 저장할 것(여러 행이 검색 된다면 여러행을 저장해야함.)
3. 검색할 때, 정규식을 사용할 필요는 없음. 검색한 데이터랑 100% 일치할 때만 출력하도록 하면 된다는 뜻임
4. 새로 저장되는 파일 이름을 입력받도록 만들 것.
5. 새로 저장되는 파일의 확장자는 반드시 xlsx 여야하며, 기본으로 제공해준 파일도 수정해서는 안됨
6. 새로 저장되는 파일에서는 B열은 포함하지 않도록 구성(전체 행 중, 내부IP 뒷 세자리 열은 빼고 저장)
5. 새로 저장되는 파일에도 head 셀은 존재하야함(내부IP, 외부포트, 내부포트, 룰 이름
다음과 같다.
이제 이 과제를 순서대로 해보도록 하겠따.
1. 읽어올 파일 open하기
import openpyxl
of = openpyxl.load_workbook('C:/Users/박상근/Desktop/port.xlsx')
sheet = of.active
내가 불러올 파일이름은 port.xlsx라는 파일이다.
이제 이 파일을 일기 파일로 열기 위해 openpyxl 모듈을 불러오고 load_workbook()이라는 함수를 사용하여 일기파일로 열 파일을 불러온다.
또한 sheet라는 변수에다는 of의 시트를 읽어 오기위해 active 함수도 사용해준다.
2. 사용자에게 입력값 받기
a = int(input("insert the number :"))
사용자에게 값을 받기 위해 input이라는 함수를 사용하였다.
앞에 int를 쓴 이유는 사용자에게 값을 숫자로 받기 위해서이다.
만약 a에 숫자가 아닌 문자 값이 들어가게 된다면
다음과 같이 형 변환 에러가 뜨게 된다.
3을 입력하여 세번째 열의있는 변수를 불러 오도록 하겠다.
3. 입력받은 열의 값 출력하기
이제 사용자에게 입력받은 열의 값을 제대로 불러오는지 확인하기 위해 사용자에게 입력 받은 열의 값을 불러와보도록 하겠다.
for i in sheet.rows:
print(i[a-1].value)
for문을 이용해서 열의 끝값까지 범위를 지정해준다.
그 후 내가 입력한 값의 열의 값을 모두 불러오기 위해 value()함수를 사용한다.
이때 입력받은 값 -1을 해줘야 하는데 이유는 sheet의 행과 열은 0부터 시작하기 때문이다.
다음과 같이 입력하고 출력을 하면
다음과 같이 3번째 열의 값이 출력이 되는데 맞는지 확인해보도록 하겠다.
지금 a에 들어가 있는 값은 3이므로 세번째 열(C열)에 해당하는 외부포트가 출력이 되어야 하는데 파이썬에 출력된 값 또한 외부포트의 값이다.
이제 값을 불러오는 것까지 마무리 했으니 다음에는 값을 비교하는 것 까지 해보도록 하겠다.