본문 바로가기

카테고리 없음

파이썬 xlwings 엑셀 창 없이 작업하는 방법: 엑셀을 데이터프레임으로 읽어오기

python xlwings 라이브러리를 이용해서 엑셀에 데이터를 읽고 쓸 때 기본적인 세팅은 엑셀 창이 열리도록 되어있습니다. 하지만 종종 이 창을 띄우지 않고서 작업을 하고 싶은 마음이 들 때가 있습니다. 예를 들어 간단히 엑셀 파일에서 데이터만 읽어오면 되는 상황이 그렇습니다. 

 

오늘은 엑셀 창 없이 xlwings 라이브러리를 이용해서 데이터를 판다스 데이터프레임 형태로 읽어오는 방법을 알아보겠습니다.

 

창 없이 xlwings를 사용하는 코드 패턴

xlwlings의 객체는 크게 다음과 같은 네 가지 유형이 있습니다. 객체의 계층 구조 순서대로 나열하면 App(엑셀 인스턴스), Book, Sheet, Range와 같습니다. 보통의 경우 xw.Book(파일명)를 바로 사용하여 엑셀 파일을 읽어왔지만, 창 없이 읽기 위해서는 App 객체부터 생성해야 합니다. 아래 코드를 보겠습니다.

 

# 라이브러리 불러오기
import xlwings as xw
import pandas as pd

# 엑셀 인스턴스 생성
app = xw.App(visible=False)
# 파일 상장법인목록
wb = xw.Book('파일명.xlsx')
# 첫번째 시트 읽어오기
sheet = wb.sheets[0]
# 데이터프레임 형태로 엑셀 시트 읽어오기
df = sheet.range('A1').options(pd.DataFrame, index=False, expand='table').value
# 인스턴스 종료
app.kill()

 

우선 필요한 라이브러리를 불러오고, 엑셀 인스턴스를 visible=False라는 옵션을 넣어 생성했습니다. 이후 엑셀 파일을 연결했습니다. 이후 과정은 xlwings를 사용하는 보통의 방법과 동일합니다.

 

예시: 한국거래소 상장법인목록 엑셀 파일 읽기 

한국거래소에서는 다음 사진과 같이 상장법인 목록을 제공합니다. 엑셀 파일을 다운로드하여 읽어보는 연습을 해보겠습니다.

 

https://kind.krx.co.kr/corpgeneral/corpList.do?method=loadInitPage

 

 

주피터 노트북을 열고 아래와 같이 코드를 입력하고 결과를 확인하겠습니다.

 

import xlwings as xw
import pandas as pd

app = xw.App(visible=False)
wb = xw.Book('상장법인목록.xls')
sheet = wb.sheets[0]
df = sheet.range('A1').options(pd.DataFrame, index=False, expand='table').value
app.kill()

df

 

 

이번 예제를 다뤄보면서 한가지 xlwings의 장점을 추가로 발견했습니다. '상장법인목록.xls' 파일의 경우 padas read_excel() 함수로는 바로 열리지 않습니다만, xlwings의 경우에는 설치된 excel을 이용해서 파일을 읽어오는 것이기 때문에 손쉽게 읽어올 수 있었습니다.

 

 

- 이 글은 아나콘다(Anaconda3)가 설치된  주피터 노트북에서 작성되었습니다.