본문 바로가기

카테고리 없음

[파이썬 엑셀 자동화] 파이썬 xlwings로 엑셀 다루기: 셀 범위 선택하기, 데이터프레임으로 읽어오기

엑셀에서와 마찬가지로 xlwings에서도 원하는 셀 범위를 간편하게 선택할 수 있는 기능이 있습니다. expand 메서드를 사용하거나 options 메서드를 사용하면 됩니다. 

 

우선 샘플 데이터를 만들겠습니다.

import xlwings as xw
import datetime as dt
# 새 통합문서를 만듭니다.
wb = xw.Book()
# 시트를 연결합니다.
sht = wb.sheets[0]
# 샘플 데이터를 만듭니다.
sht.range('A1').value = [[1, 2, 3, 4], 
                         ['A', 'B', None, dt.datetime(2020, 1, 6)],
                         [11, 12, 13, 14]]

 

 

셀 범위 선택의 세가지 방법

셀 범위 선택을 하기위해서는 expand 메서드를 사용하거나 options 메서드를 사용해야 합니다. 선택 옵션으로는 세 가지가 있습니다.

 범위 선택 옵션 엑셀 단축키
expand = ‘table’ Ctrl - Shift - down - right
expand = ‘down’ Ctrl - Shift - down
expand = ‘right’ Ctrl - Shift - right

 

expand 메서드 사용시

sht.range('A1').expand('table').value
# >> [[1.0, 2.0, 3.0, 4.0],
# >> ['A', 'B', None, datetime.datetime(2020, 1, 6, 0, 0)],
# >> [11.0, 12.0, 13.0, 14.0]]
sht.range('A1').expand('down').value
# >> [1.0, 'A', 11.0]
sht.range('A1').expand('right').value
# >> [1.0, 2.0, 3.0, 4.0]

 

options 메서드 사용 시

sht.range('A1').options(expand='table').value
# >> [[1.0, 2.0, 3.0, 4.0],
# >> ['A', 'B', None, datetime.datetime(2020, 1, 6, 0, 0)],
# >> [11.0, 12.0, 13.0, 14.0]]
sht.range('A1').options(expand='down').value
# >> [1.0, 'A', 11.0]
sht.range('A1').options(expand='right').value
# >> [1.0, 2.0, 3.0, 4.0]

 

위와 같은 방법을 이용하면 엑셀 시트를 한방에 쉽게 읽어 올 수 있습니다. 하지만 추가 작업을 하기에 리스트 형태는 다소 불편한 감이 있습니다. 이번에는 데이터프레임 형태로 불러와 보겠습니다.  

 

데이터프레임으로 읽어오기

# 자료형 변환을 위해 pandas를 불러옵니다.
import pandas as pd
# 엑셀 시트 상의 데이터를 데이터프레임 형태로 읽어옵니다.
sht.range('A1').options(pd.DataFrame, index=False, header=False, expand='table').value

 

 

-이 글은 아나콘다(Anaconda3)가 설치된 환경을 기준으로 작성되었습니다.