- xlrd/xlwt - 파이썬으로 엑셀 다루기
- xlrd/xlwt 설치하기
- xlrd 기본 사용
- xlwt 기본 사용
- xlrd/xlwt 조건식 사용하기
- xlrd/xlwt 여러 시트 다루기
- xlrd/xlwt 여러 파일 다루기
- xlrd/xlwt 통계 데이터 추출하기
- xlrd/xlwt 스타일 지정하기
- xlrd/xlwt 셀 병합하기
- xlrd/xlwt 열 너비 조절하기
- Python Tutorial
- NumPy Tutorial
- Matplotlib Tutorial
- PyQt5 Tutorial
- BeautifulSoup Tutorial
- xlrd/xlwt Tutorial
- Pillow Tutorial
- Googletrans Tutorial
- PyWin32 Tutorial
- PyAutoGUI Tutorial
- Pyperclip Tutorial
- TensorFlow Tutorial
- Tips and Examples
xlrd/xlwt 조건식 사용하기¶
xlrd, xlwt와 Python의 조건식을 이용해서 원하는 데이터만 추출할 수 있습니다.
우선 0~1 사이의 임의의 값을 갖는 10행, 10열의 데이터(excel_ex.xls)를 만들었습니다.
이 10×10개의 데이터 중 0.5 이상의 값을 갖는 데이터만 가져와서 새 엑셀 파일을 만들어 보겠습니다.
예제¶
import xlrd, xlwt
wb = xlrd.open_workbook('excel_ex.xls')
sheets = wb.sheets()
nsheets = wb.nsheets
wbwt = xlwt.Workbook(encoding='utf-8')
ws = wbwt.add_sheet('Sheet1', cell_overwrite_ok=True)
nrows = sheets[0].nrows
ncols = sheets[0].ncols
for i in range(nrows):
for j in range(ncols):
if sheets[0].cell_value(i, j) > 0.5:
ws.write(i, j, sheets[0].cell_value(i, j))
wbwt.save('excel_ex_result.xls')
이 간단한 코드로 엑셀 파일을 읽고 조건에 맞는 데이터들만 가져와서 새로운 파일로 만들 수 있습니다.
설명¶
import xlrd, xlwt
wb = xlrd.open_workbook('excel_ex.xls')
sheets = wb.sheets()
nsheets = wb.nsheets
우선 모듈을 불러와주고, open_workbook()을 이용해서 ‘excel_ex.xls’ 파일을 불러와줍니다. open_workbook()은 ‘Book’ 클래스의 인스턴스를 반환합니다.
이 workbook(wb)의 sheets()는 모든 시트들의 리스트를 반환합니다.
만약 시트의 인덱스 또는 이름으로 가져오고 싶으면 sheet_by_index() 또는 sheet_by_name()을 사용합니다. 각각 인덱스 번호나 시트 이름을 넣어줍니다.
nsheets는 시트의 개수입니다.
wbwt = xlwt.Workbook(encoding='utf-8')
ws = wbwt.add_sheet('Sheet1', cell_overwrite_ok=True)
Workbook 클래스로 워크북을 하나 만들어주고, 인코딩 방식을 ‘utf-8’로 설정합니다.
add_sheet() 메서드를 이용해서 시트를 하나 만들어 줍니다.
첫 번째 파라미터에는 시트의 이름(‘Sheet1’)을 지정해 줍니다.
cell_overwrite_ok를 True로 설정해주면 덮어쓰기 허용합니다. 만약 False로 설정하면 한 번 이상의 쓰기를 허용하지 않습니다.
add_sheet() 메서드는 추가한 시트를 반환하므로, ws는 이 추가한 시트를 나타냅니다.
nrows = sheets[0].nrows
ncols = sheets[0].ncols
sheets는 읽어온 엑셀의 모든 시트를 갖고 있습니다. sheets[0].nrows, sheets[0].ncols는 각각 첫 번째 시트(sheets[0])의 행의 개수와 열의 개수입니다.
for i in range(nrows):
for j in range(ncols):
if sheets[0].cell_value(i, j) > 0.5:
ws.write(i, j, sheets[0].cell_value(i, j))
모든 데이터에 대해 만약 값이 0.5보다 크면(sheets[0].cell_value(i, j) > 0.5), write() 메서드를 이용해서 새로 만든 시트(ws)에 데이터를 기록합니다.
write() 메서드의 첫 번째와 두 번째 파라미터에는 데이터가 쓰여질 행(row)과 열(column)의 위치를 넣어주고, 세 번째 파라미터에는 쓰여질 데이터(sheets[0].cell_value(i, j))를 넣어줍니다.
sheets[0].cell_value(i, j)는 읽어온 엑셀 파일의 첫 번째 시트의 i 행, j 열의 값입니다.
wbwt.save('excel_ex_result.xls')
마지막으로 새로 만든 워크북(wbwt)을 ‘excel_ex_result.xls’라는 이름으로 저장해줍니다.
excel_ex_result.xls 파일을 열어보면 0.5 이상의 값을 갖는 데이터만 남아 있습니다.