반응형
파이썬으로 액셀 제어하는 라이브러리가 종류가 제법 많은 것 같다.
각 라이브러리의 장단점은 일단 잘 모르겠다.
나는 원래 openpyxl 이라는 라이브러리를 사용하고 있었는데 왜 xlrd 라는걸 쓰게됐냐면
openpyxl을 사용하는데 어느날 파일의 시트이름을 쭉 print 시켜봤는데 수초 이상 시간이 오래걸리는걸 발견하였다.
그래서 openpyxl이 속도가 너무 느린거 같아서 다른걸 찾아보다가 xlrd 를 새로 공부하게 되었다.
xlrd가 특별히 속도가 빠른지 어떤지는 잘 모르겠다. 근데 사용방법이나 이런게 openpyxl이랑 거의 유사하더라.
근데 xlrd는 엑셀 읽기만 가능하고 write를 하려면 xlwt 라고 별도 라이브러리를 따로 써야한다.
※ 참고
xlrd는 xlsx를 지원하지 않고, .xls 만 지원된다.
openpyxl은 xls를 지원하지 않는다. .xlsx만 지원
참고로 엑셀 양식 기준으로는 xlsx가 더 최신양식이다.
라이브러리 홈페이지 아래 참조
xlrd — xlrd 2.0.1 documentation
1.설치
pip install xlrd
2.개요
import xlrd
file = xlrd.open_workbook("py_excel_test.xls")
# 파일내 sheet 갯수
print("number of sheet is %d" %file.nsheets)
# 파일내 sheet 들 이름 출력 (리턴 형식이 리스트임)
print(file.sheet_names())
#인덱스로 시트 선택
sheet = file.sheet_by_index(0)
#현재 시트의 이름, row 수, column 수 출력
print("현재 시트 이름 %s , row 수 %d , col 수 %d " %(sheet.name,sheet.nrows,sheet.ncols))
참고로, row수, column 수는
그냥 해당 시트에서 한칸이라도 뭔가 쓰여있는거 중에 가장 바깥쪽에 있는걸 기준으로 row,column을
출력한다.
3. Row 접근, Col 접근,
import xlrd
file = xlrd.open_workbook("py_excel_test.xls")
#인덱스로 시트 선택
sheet = file.sheet_by_index(0)
#row 내용 출력(리턴 형식은 리스트임)
print(sheet.row_values(4))
print(sheet.row_values(5))
#column 내용 출력(리턴 형식은 리스트임)
print(sheet.col_values(4))
print(sheet.col_values(5))
>>> ['', 'Number', 'Memo', 'Data1', 'Data2', 'Data3', 'Data4', 'Data5', 'Out1', '', '']
>>> ['', 1.0, 'memo1', 'data11', 'data21', 'data31', 'data41', 'data51', 'out11', '', '']
>>> ['', '', '', '', 'Data2', 'data21', 'data22', 'data23', 'data24', 'data25', 'data26', 'data27', 'data28', '', '', '', '', '', '', '', '', '', 99.0]
>>> ['', '', '', '', 'Data3', 'data31', 'data32', 'data33', 'data34', 'data35', 'data36', 'data37', 'data38', '', '', '', '', '', '', '', '', '', '']
row_values 와 col_values에서 사용되는 인덱스는 0부터 시작하는 것에 유의하자.
4.특정 셀 접근
import xlrd
file = xlrd.open_workbook("py_excel_test.xls")
#인덱스로 시트 선택
sheet = file.sheet_by_index(0)
# 6행 7열 선택하는 3가지 방법
print(sheet.cell_value(6,7))
print(sheet.row_values(6)[7]) # row_values의 출력형태가 리스트고, 그 리스트의 멤버변수에 접근하는 것임 그래서 (6)[7]
# 괄호, 대괄호 헷갈리지 말 것.
print(sheet.col_values(7)[6])
반응형
'프로그래밍 관련 > 파이썬 액셀제어(xlrd)' 카테고리의 다른 글
파이썬 액셀제어 xlwt 개요 (0) | 2021.11.12 |
---|