JSITCLUB

파이썬 - 엑셀 관련 모듈 정리 (openpyxl, xlrd, xlwt) 본문

파이썬/활용

파이썬 - 엑셀 관련 모듈 정리 (openpyxl, xlrd, xlwt)

jsitclub 2021. 10. 15. 19:22

파이썬으로 데이터를 다루다보면, 엑셀파일의 자료를 다루는 경우가 많이 있습니다. 

그래서 엑셀관련 모듈을 사용해야 하는데, 대표적으로 많이 사용하는 모듈의 종류와 간단한 예제를 소개하겠습니다.

 

모듈을 설명하기 앞서 기본적으로 엑셀파일을 다룰때는 대부분

1. workbook 작업

2. workbook.sheet 작업

3. 행(row),열(column) 값을 이용해 sheet의 cell 값을 처리

하는 과정으로 진행됩니다.

 

 

- xlsx 파일 일 경우

1) openpyxl

대표적인 xlsx파일 관련 모듈 입니다.(읽기/쓰기 및 새파일 생성이 모두 가능합니다.)

import openpyxl

book = openpyxl.load_workbook(currPath+"/files/myfile.xlsx")
sheet=book.active
###########################데이터 읽기##################################

## 셀값 출력(2가지 방법)
print(sheet['A1'].value)
print(sheet.cell(row=1,column=1).value)

## 1행 출력
row=sheet['1']
for cell in row:
    print(cell.value)

## A열 출력
col = sheet['A']
for cell in col:
    print(cell.value)

########################### 데이터 쓰기 ##################################
sheet['F5'] = "추가된 데이터"
sheet['F6'] = "new data"

book.save(currPath+"/files/myfile.xlsx")


########################### 새 파일 생성 ##################################
from openpyxl import Workbook

book = Workbook()
sheet = book.active

sheet['A1'] = 56
sheet['A2'] = 43

book.save(currPath+"/files/new.xlsx")

 

참고로 pyexcel 과 같이 xlsx를 다루는 다른 모듈도 있습니다. 본인이 편리하다고 생각되는 모듈을 사용하세요~

 

 

- xls 파일(엑셀 97-2003 파일) 일 경우

1) xlrd

xls 파일(excel 97-2003 버전) 을 읽을 때 사용합니다.

# coding: utf-8
# xls(Excel97-2003) 파일을 다룰때 사용

import xlrd

#workbook 불러오기
book = xlrd.open_workbook("temp.xls", ignore_workbook_corruption=True)

#sheet 불러오기
sh = book.sheet_by_index(0)



### 데이터 사용 방법들

#2번째행 출력
print(sh.row_values(1))

#sheet 정보 출력
print("{0} {1} {2}".format(sh.name, sh.nrows, sh.ncols))

#(0,0) 셀 값 출력
print("Cell value is {0}".format(sh.cell_value(rowx=0, colx=0)))

#행 별 출력
for rx in range(sh.nrows):
    print(sh.row(rx))

 

2) xlwt

xls 파일(excel 97-2003 버전) 을 만들때 즉 파일 생성 할때 사용합니다.

xlrd는 읽기만 가능하므로 새로운 xls파일을 만들어야 할때는 따로 xlwt모듈을 설치 후 사용해야 합니다.

import xlwt

xlsBook=xlwt.Workbook(encoding='utf-8')
sh=xlsBook.add_sheet('sheet1')
sh.write(0,0,"hello")

xlsBook.save('temp.xls')

 

3) xlutils

 

기존 xls파일을 수정해야 할때는 xlrd 모듈로 읽어온 데이터를 xlutils 모듈을 이용해 복사> 가공> 저장 합니다.

import xlrd 
from xlutils.copy import copy


rb = xlrd.open_workbook("myfile.xls")
wb = copy(rb)

s = wb.get_sheet(0)
s.write(0,0,'A1')
wb.save('myfile.xls')

 

개인적으로 사용 해본 내용을 간단히 정리 해보았습니다.

필요할때 마다 검색한것이라 예제의 출처가 명확 하지는 않지만 주로 https://stackoverflow.com/https://readthedocs.org/ 에서 도움을 많이 받았습니다. 

Comments