Python에서 Excel 사용
Language/Python

Python에서 Excel 사용

728x90
반응형

 

1. 파이썬에서 엑셀 사용하기

파이썬에서 엑셀 데이터를 핸들링하기 위해서는 openpyxl, xlrd,

xlrw 등의 외부 패키지를 설치해서 사용하며, openpyxl 패키지를

다음과 같이 설치하여 사용한다.

 

pip3 install openpyxl

 

 

 

 

2. 엑셀 데이터 읽고 쓰기

엑셀을 다루는 가장 기초적인 부분은 데이터를 읽고 쓰는 동작이므로, 먼저

엑셀 파일을 열고 그 안의 데이터를 읽고 몇 개의 데이터를 쓰는 동작을 활용한

.

다음 예제는 국영수 점수를 담은 엑셀 파일을 읽어 각 학생별 국영수 합계를 구

하여 다시 저장하는 예이다.

엑셀 입력 파일은 다음과 같다고 가정하고 합계 부분은 추가해야 하는 부분이다.

 

 

 

 

import openpyxl

 

# 엑셀파일 열기

wb = openpyxl.load_workbook('score.xlsx')

 

# 현재 Active Sheet 얻기

ws = wb.active

# ws = wb.get_sheet_by_name("Sheet1")

 

# 국영수 점수를 읽기

for r in ws.rows:

row_index = r[0].row # 행 인덱스

kor = r[1].value

eng = r[2].value

math = r[3].value

sum = kor + eng + math

 

# 합계 쓰기

ws.cell(row=row_index, column=5).value = sum

 

print(kor, eng, math, sum)

 

# 엑셀 파일 저장

wb.save("score2.xlsx")

wb.close()

 

 

 

위 파일을 저장한 후 실행한다.

 

 

 

 

 

먼저 엑셀 파일을 오픈하기 위해 openpyxl.load_workbook(엑셀 파일명) 함수를

호출하여 Workbook 객체를 얻는다.

하나의 Workbook에는 여러 개의 Worksheet 들이 있는데 통상 엑셀은 기본으로

Sheet1, Sheet2, Sheet3 3개의 시트를 생성한다.

엑셀 파일을 열면 보통 첫 번째 시트가 Active Sheet가 되므로 Worksheet 객체의

active를 통해 현재 워크시트를 가져올 수 있지만, 엑셀은 이전 저장시 마지막에

선택된 시트를 Active Sheet로 하므로 wb.get_sheet_by_name(시트명)을 사용하는

것이 더 안전하다.

 

워크시트는 행(Row)과 열(Column)로 구성되어 있는데, 시트 내에 데이터가

있는 부분의 행들은 시트객체.rows를 통해 엑세스할 수 있고, 마찬가지로

시트객체.columns는 유효 컬럼들을 엑세스하는데 사용한다.

 

위의 예제에서 각 행을 하나씩 가져오기 위해 for 루프로 ws.rows로부터 한 row

씩 가져오고 있다.

row는 그 행 안에 있는 cell 들의 집합으로 처음 cellr[0]과 같이 인덱스

0을 사용한다. cell r[0]의 값을 리턴하기 위해 r[0].value 을 사용한다.

 

특정 cell에 값을 지정하기 위해 cell.value에 값을 넣으면 되는데, 시트에서

cell을 지정하기 위해 ws["A1"]과 같이 엑셀식 cell 지정법을 사용할 수 있고,

또한 행열 인덱스를 사용하여 ws.cell(row=행인덱스, column=열인덱스) 표현을

사용할 수도 있다.

 

엑셀의 변경 내용을 저장하기 위해서는 Workbook 객체에서 save() 메서드를

사용하며, 엑셀 사용이 모두 끝난 경우 close() 메서드를 호출한다.

 

728x90
반응형