본문 바로가기

programming/python

[ python 활용하기 #5 ] 파이썬 엑셀 파일 읽기 쓰기 지우기

[ python 활용하기 #5 ] 파이썬 엑셀 파일 읽기 쓰기 지우기

 

안녕하세요. 심심한 코딩쟁이입니다.

 

오늘은 파이썬으로 엑셀 파일을 다뤄보는 시간을 가져보겠습니다.

 

직장인들에게 엑셀은 아주 친밀?한 존재인데요.

 

간단하고 반복적인 업무인 경우에는 쉽게 자동화가 가능하기 때문에


파이썬을 이용해서 월급 루팡에 도전해봅시다.

 

python-excel
파이썬 엑셀


openpyxl 라이브러리 설치

 

파이썬을 통해 엑셀 파일(.xlsx)을 다루기 위해서는 openpyxl 라이브러리가 필요합니다.

 

pip를 이용해 설치해 봅시다.

 

# pip 업데이트
python -m pip install --upgrade pip

# openpyxl 라이브러리 설치
pip install openpyxl

엑셀 파일 생성

 

파일명이 symxsym인 엑셀 파일이 생성됩니다.

import openpyxl as pyxl

# 워크북 생성
wb = pyxl.Workbook()
# symxsym.xlsx 엑셀 파일이 생성됩니다.
wb.save('symxsym.xlsx')

엑셀 시트 생성 및 변경

 

엑셀 파일에서 작업을 진행할 시트를 불러오거나 새로운 시트를 만드는 방법입니다.

 

import openpyxl as pyxl

# 워크북 생성
wb = pyxl.Workbook()
# 현재 활성화되어있는 시트를 불러옵니다.
sheet = wb.active
# sheet2 이름을 가진 새로운 시트 만들기
wb.create_sheet('sheet2')
# 작업할 시트를 sheet2 시트로 변경
sheet = wb['sheet2']
# 시트 이름을 시트2로 변경
sheet.title = '시트2'
# 엑셀 파일 저장
wb.save('symxsym.xlsx')

 

생성된 엑셀 파일을 열어보면 '시트2'란 이름으로 두 번째 시트가 생성되어 있는 걸 볼 수 있습니다.


엑셀 데이터 입력 또는 삭제

 

이미 존재하는 엑셀 파일을 열기 위해서는 load_workbook을 사용합니다.

 

import openpyxl as pyxl
import os

# 현재 경로를 가져옵니다.
path = os.getcwd()
# \를 표기하기 위해 이스케이프를 사용합니다.
path = path + "\\"
# 앞에서 만든 엑셀 파일 열기
wb = pyxl.load_workbook(path + "symxsym.xlsx")
# 엑셀 파일의 시트 리스트 확인
print(wb.sheetnames)
# 시트2 시트에서 작업하기위해 시트를 불러옴
ws = wb['시트2']
# A1 셀에 내용 입력
ws['A1'] = '심심한코딩'
# 행 단위로 내용 입력
ws.append([1,2,3,4,5])
# 셀 좌표로 접근 후 내용 입력
ws.cell(row=3, column=3).value = '티스토리'

# 입력하는 내용을 '' 공백으로 설정하면 내용 삭제와 같은 동작
ws['A1'] = ''

# 엑셀 파일 저장
wb.save('symxsym.xlsx')

 

입력하는 코드만 진행한 경우 아래와 같은 결과를 얻고 

 

insert
내용 입력 결과

 

삭제하는 코드까지 진행하면 아래와 같은 결과가 나옵니다.

 

delete
내용 삭제 결과


엑셀 데이터 읽기

 

import openpyxl as pyxl
import os

path = os.getcwd()
path = path + "\\"
wb = pyxl.load_workbook(path + "symxsym.xlsx")
ws = wb['시트2']

# 모든 데이터 출력
values = []
for row in ws.rows:
	row_list = []
	for cell in row:
		row_list.append(cell.value)
	values.append(row_list)

print(values)
# 출력 결과
[[None, None, None, None, None], [1, 2, 3, 4, 5], [None, None, '티스토리', None, None]]

# 원하는 영역 데이터 출력
values = []
for x in range(1, ws.max_row+1):
	list = []
	for y in range(1, 6):
		list.append(ws.cell(row=x, column=y).value)		
	if len(list) != 0:
		values.append(list)

print(values)
# 출력 결과
[[None, None, None, None, None], [1, 2, 3, 4, 5], [None, None, '티스토리', None, None]]

# 원하는 영역 데이터 출력 중 공백이 있으면 생략
values = []
for x in range(1, ws.max_row+1):
	list = []
	for y in range(1, 6):
		if ws.cell(row=x, column=y).value == None:
			break
		else:
			list.append(ws.cell(row=x, column=y).value)		
	if len(list) != 0:
		values.append(list)

print(values)
# 출력 결과
[[1, 2, 3, 4, 5]]

여기까지 파이썬 활용하기 다섯 번째 엑셀 파일 다루는 방법이었습니다.

 

엑셀 파일의 내용을 읽어 들인 후 원하는 조건을 만족시키면 특정 작업을 수행하게끔 만들면

 

간단한 업무의 자동화는 쉽게 만들 수 있으실 겁니다. 만약 자동화가 필요한 업무가 있으신데 혼자서

 

처리하기 어려우시다면 댓글로 메일을 남겨주세요.

 

도움을 드릴 수 있는 부분이 있다면 포스팅으로 다루거나 코드 작성을 도와드리도록 하겠습니다.

 

좋은 하루 보내세요. 감사합니다.

반응형