업무자동화(RPA) 1편 - 엑셀
openpyxl
openpyxl은 파이썬에서 엑셀의 데이터를 변경할 수 있게 해주는 모듈이다.
터미널에 pip install openpyxl
로 설치가 가능하며 OpenPyXL readthedocs 사이트에서 모듈의 설명을 볼 수 있다.
학생들의 데이터 받아서 엑셀로 저장하기
대학의 교수가 필요할법한 프로그램으로, 학생들의 성적 데이터를 받아서 총합을 내고 성적을 나눠주는 프로그램을 만들어보자.
학생들의 데이터:
1
2
3
4
5
6
7
8
9
10
11
학번, 출석, 퀴즈1, 퀴즈2, 중간고사, 기말고사, 프로젝트
1,10,8,5,14,26,12
2,7,3,7,15,24,18
3,9,5,8,8,12,4
4,7,8,7,17,21,18
5,7,8,7,16,25,15
6,3,5,8,8,17,0
7,4,9,10,16,27,18
8,6,6,6,15,19,17
9,10,10,9,19,30,19
10,9,8,8,20,25,20
해야하는 일:
- 학생들의 데이터를 받아 엑셀에 삽입하기
- 학생들의 데이터에 총점을 계산하기
- 계산한 총점으로 성적을 나누기
- 출결점수가 좋지 않은 학생은 F학점
완성된 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
from openpyxl import Workbook
from openpyxl import load_workbook
wb = Workbook() # 엑셀 워크북 생성
ws = wb.active
ws.title = "Student_" # 현재 활성화 된 시트(sheet)를 가져옴
# 데이터 (학번/출석/퀴즈1/퀴즈2/중간고사/기말고사/프로젝트)
student_data = [
(1, 10, 8, 5, 14, 26, 12),
(2, 7, 3, 7, 15, 24, 18),
(3, 9, 5, 8, 8, 12, 4),
(4, 7, 8, 7, 17, 21, 18),
(5, 7, 8, 7, 16, 25, 15),
(6, 3, 5, 8, 8, 17, 0),
(7, 4, 9, 10, 16, 27, 18),
(8, 6, 6, 6, 15, 19, 17),
(9, 10, 10, 9, 19, 30, 19),
(10, 9, 8, 8, 20, 25, 20),
]
ws.append(("학번", "출석", "퀴즈1", "퀴즈2", "중간고사", "기말고사", "프로젝트", "총점", "성적"))
for idx, i in enumerate(student_data):
ws.append(i) # 데이터 엑셀에 집어넣기
ws.cell(row=idx + 2, column=4).value = 10 # 퀴즈2 10점으로 수정
ws.cell(row=idx + 2, column=8).value = f"=SUM(B{idx+2}:G{idx+2})" # 총점 계산
sum_val = sum(i[1:]) - i[3] + 10 # 성적계산용 총점
print("총점 : {}".format(sum(i[2:])))
print("퀴즈2 : {}".format(i[3]))
print("성적용 총점 : {}".format(sum_val))
print()
if sum_val >= 90: # 성적 나누기
ws.cell(row=idx + 2, column=9).value = "A"
elif sum_val >= 80:
ws.cell(row=idx + 2, column=9).value = "B"
elif sum_val >= 70:
ws.cell(row=idx + 2, column=9).value = "C"
else:
ws.cell(row=idx + 2, column=9).value = "D"
if int(i[1]) < 5:
ws.cell(row=idx + 2, column=9).value = "F"
wb.save("student.xlsx")
wb.close()
이렇게 엑셀파일에 성공적으로 학생들의 데이터를 저장했다. 다음 포스팅에서 엑셀과 ppt를 사용해 카드에 저장하는 식으로 구현해보겠다.
댓글남기기