본문 바로가기

개인공부/python

나 혼자 하는 프로젝트 3탄 - 업무자동화(RPA) 엑셀 7장 - 이미지 삽입, 마무리 퀴즈

엑셀에 이미지를 삽입해야 하는 경우도 있다.

이미지를 삽입하려면 openpyxl의 drawing.image 에서 Image를 가져와야 한다.

이때 ImportError가 발생할 수 있는데, 이때에는 Pillow 라이브러리를 추가로 설치해 주면 해결 가능하다.

에러 메세지가 나오면 당황하지 말고 구글링을 통해 확인하자!

이제 엑셀 작업을 위한 기초적인 코드 공부가 끝났다.

좀더 자세한 내용은 openpyxl의 공식 홈페이지를 통해 공부하도록 하자.

 

퀴즈타임~!!

성적 데이터는 https://www.youtube.com/watch?v=exgO1LFl9x8&t=5728s 주소의 고정댓글에 나온다.

먼저 새로운 파일을 열어 기존 성적 데이터부터 입력해주자.

(물론, 엑셀에서 직접 입력해도 되지만, 그러기 위한 퀴즈는 절대 아닐거다...)

 

고정댓글에서 불러온 데이터값을 scores라는 변수에 저장해 주었다. 

append() 통해 리스트 형태로 엑셀에 한줄씩 삽입 가능하기에, scores 변수는 리스트형이며, 안에 들어가는 총 10명의 데이터는 각각의 튜플형태로 저장했다.

이제 for문을 통해 해당 scores 변수에서 한줄씩 불러솨 append()로 엑셀에 한줄씩 삽입해 주면 된다.

이제 본격적인 퀴즈 풀이를 위한 기초작업이 끝났다.

1. 퀴즈2 점수를 10점으로 수정!

퀴즈2는 D열에 있다. 즉 D2:D11의 점수를 모두 10점으로 수정해 주어야 한다.

나중에 해답 영상을 보면 차이점을 알 수 있겠지만, 나는 iter_rows()를 통해 전체 열을 확인하여, row[3]의 값만 10으로 다 바꾸어 주었다.

2. H열에 "총점", I열에 "성적" 정보 추가하기

합계를 구하는 것은 조금 복잡할 수 있다. 천천히 하나하나 풀어보자

for문을 이용하여 scores 변수를 enumerate()로 풀어준다. 이때 start=2 로 지정하면 idx는 2부터 시작한다.

scores는 총 10개의 튜플을 가지는 리스트이므로, 각 튜플을 돌게 되는데, 이때 sum()함수를 이용하여 합계를 먼저 구해준다. 1번으로 수정한 "퀴즈2" 점수는 scores에는 반영이 안되었기 때문에, 기존 퀴즈2 점수인 score[3]을 빼고, 10을 더해주면 된다. 이는 "성적" 정보를 구하기 위한 변수로 사용된다. 

엑셀에 넣을 수식은 열은 idx를 column은 8로 고정이다. 즉 시작은 H2 이고, H3, H4 순서로 idx증가에 따라 가로로 이동하게 된다. 넣은 내용은 "=sum(B{}:G{})" 이며 들어갈 변수는 둘다 idx 이다.

 

이제 먼저 구해둔 total_score 변수를 이용하여 "성적" 정보를 입력해 주자.

if문을 작성하여 조건을 설정해 주고, 해당 cell의 value 값을 입력해주면 된다.

한가지 score[1]은 출석점수 인데, 이를 가장 밑에 적어준 이유는 코드는 가장 마지막에 작성한 것을 덮어쓰기 때문이다.

반대로 if문(출석 점수)를 먼저 쓰고, 그 아래 다시 if문(total_score)를 작성해 주어도 무방하다.

 

이제 파일을 열어 원하는 결과들이 잘 나왔는지 확인을 해보자.

 

원하는 값들이 정상적으로 나온걸 확인할 수 있다.

영상의 정답은 아래 코드를 확인하자

1번 문제 풀이
2, 3번 문제 풀이