xlwings의 Book, Sheet, Range 객체 다루기

업데이트:

이전글 : 자동화를 위한 엑셀 객체 구조 파악하기

엑셀파일을 열고 시트와 셀을 지정해보자

이제 파이썬의 xlwings 라이브러리를 통해 엑셀 객체 구조에 접근해보자. 앞서 보았던 xlwings 맛보기(링크)에서 처럼 라이브러리 약칭은 xw로 한다.

In [1]:
import xlwings as xw

통합문서(Book) 객체 생성하기

실습을 위한 엑셀파일을 작업 중인 폴더에 내려받도록 하자(다운로드). 파일을 열어보면 아래와 같이 2개의 시트로 구성돼있다. 두번째 시트(Sheet2)는 내용이 없는 시트이다.

xlwings_excel2
주식_종목_리스트.xlsx

xw.Book 함수에 엑셀파일의 경로를 인수로 입력하면 해당 통합문서(Book) 객체에 대응하는 파이썬 객체가 생성된다. 파이썬에서 생성한 Book 객체를 통해 실제 엑셀의 Book 객체에 데이터(속성)나 기능(메서드)을 요청할 수 있게 된다. Book 객체의 name 속성은 해당 파일명을 문자열로 반환한다.

In [2]:
bk = xw.Book('주식_종목_리스트.xlsx')
bk.name
Out [2]:
'주식_종목_리스트.xlsx'

파이썬에서 Book 객체를 생성할 때, 실제 엑셀 프로그램에서도 파일이 열리는 것을 확인할 수 있다. 엑셀 프로그램이 닫혀 있었다면 프로그램이 먼저 실행된다.

Book 객체의 sheets 속성은 해당 파일에 담긴 모든 시트들의 모음인 Sheets 객체를 반환한다. Sheets 객체의 count 속성은 전체 시트의 개수를 반환한다.

In [3]:
bk.sheets.count
Out [3]:
2

시트(Sheet) 객체 생성하기

개별 엑셀시트(Sheet) 객체를 생성하는 방법은 2가지가 있다. 앞에서 설명한 시트 모음(Sheets) 객체에서 시트의 순번이나 이름을 인수로 입력하면 Sheet 객체가 생성된다. Sheet 객체의 name 속성은 해당 시트명을 문자열로 반환한다.

In [4]:
sh1 = bk.sheets(1)         # 또는 bk.sheets('Sheet1')
sh2 = bk.sheets('Sheet2')  # 또는 bk.sheets(2) 
sh1.name
Out [4]:
'종목리스트'

특정 시트를 지우려면 해당 Sheet 객체의 delete 메서드를 사용하면 된다. 아래의 코드를 실행하면 실제 엑셀 화면에서 두번째 시트가 삭제되는 것을 확인할 수 있다.

In [5]:
sh2.delete()

Range 객체

엑셀시트 내에 값과 서식이 저장되는 공간을 셀(Cell)이라 하고, 여러개의 셀을 모든 것을 범위(Range)라고 한다. 셀 또는 범위는 알파벳(열)과 숫자(행)로 이뤄진 주소를 갖는다. 예를 들어 A열 1행에서 C열 5행까지의 범위에 해당하는 주소는 ‘A1:C5’가 된다.

앞에서 생성한 Sheet 객체를 특정 주소값으로 인덱싱하면, 해당 범위에 대한 Range 객체가 생성된다. Range 객체의 ‘value’ 속성은 해당 셀 또는 범위에 담겨있는 값들을 반환한다.

In [6]:
a=sh1['A1'].value
b=sh1['C2'].value
c=sh1['A1:A4'].value
d=sh1['A1:B2'].value

print(a, type(a))
print(b, type(b))
print(c)
print(d)
Out [6]:
종목코드 <class 'str'>
82600.0 <class 'float'>
['종목코드', 'A005930', 'A051910', 'A035420']
[['종목코드', '종목명'], ['A005930', '삼성전자']]

개별 셀의 값을 호출하면 문자열(str)이나 실수(float) 자료형이 반환된다. 2개 이상 셀로 이뤄진 범위의 값을 호출하면 리스트 또는 ‘리스트 of 리스트’ 형태로 반환된다.

다음 포스팅에서는 Range 객체를 활용해 엑셀파일에 담긴 자료를 판다스 데이터프레임(DataFrame)으로 변환하는 방법을 살펴보도록 하겠다.

다음편 : DRM 걸린 엑셀 파일을 판다스 데이터프레임으로 불러오기

엑셀자동화 카테고리 목록 바로가기

댓글남기기