xlrd/xlwt 조건식 사용하기


_images/xlrd_xlwt_ex01_01.PNG

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 이상의 값을 갖는 데이터만 남아 있습니다.


_images/xlrd_xlwt_ex01_02.PNG

excel_ex_result.xls



이전글/다음글

이전글 :