본문 바로가기
프로그래밍/Python

[Python] Read/Write Excel sheet (Python으로 엑셀 파일 읽기/쓰기) 정리 #xlwt/xlrd

by _BlankSpace 2019. 3. 19.

 왠만한 프로그래밍 언어로 엑셀 파일을 다루는 것은 꽤나 복잡한 일이 아닐 수 없습니다.


그래서, 혹시나 하는 마음에 파이썬에서 관련 라이브러리가 있나 찾아봤더니, 역시나 있었습니다.


관련 라이브러리명은 xlrd / xlwt 로, 각각 엑셀 파일을 읽고/쓰는 역할을 합니다.



라이브러리에 대한 자세한 문서는 아래 링크를 참고해주세요.

xlrd 문서 참고하기.

xlwt 문서 참고하기.


그럼 라이브러리 각각의 사용 방법을 설명하겠습니다.


 xlrd - 엑셀 파일 데이터 읽기 라이브러리


설치 방법#

여기서는 pip를 이용하여 관련 라이브러리를 설치할 것이므로, pip를 선행으로 설치해주세요.


pip 설치 방법은 아래와 같습니다.

윈도우/리눅스 pip 설치 따라하기


pip를 이용하여 xlrd를 설치합니다.

1
pip install xlrd
cs


사용 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
import xlrd
 
workbook = xlrd.open_workbook('example.xlsx')
 
print workbook.sheet_names() # 엑셀 파일의 모든 시트 이름을 리스트 형식으로 가져온다.
 
for sheet in workbook.sheets() :
    print sheet.name # 시트의 이름을 가져온다.
    for i in range(sheet.nrows) :
        row = sheet.row(i)
        for j in row:
            print j.value,
        print ''
cs


파일 읽기#

아래 함수를 이용하여 엑셀 파일을 읽어옵니다.

1
workbook = xlrd.open_workbook('example.xlsx')
cs


데이터 시트 다루기#

모든 시트의 이름을 가져오기.

1
workbook.sheet_names()
cs


모든 시트 가져오기.

1
workbook.sheets()
cs


이름으로 시트 가져오기.

시트의 이름이 ex1 라면, sheetname에 ex1을 넣어주면 됩니다.

1
worksheet_name = workbook.sheet_by_name(sheetname)
cs


인덱스로 시트 가져오기.

시트의 인덱스 번호를 입력하여 해당 시트를 가져옵니다. 첫 번째 시트는 0부터 시작합니다.

1
worksheet_index = workbook.sheet_by_index(index)
cs


데이터 다루기#

줄 수 가져오기.

1
num_rows = worksheet_name.nrows
cs

칸 수 가져오기.

1
num_cols = worksheet_name.ncols
cs

줄 값 가져오기.

1
row_val = worksheet_name.row_values(row_index)
cs

셀 값 가져오기.

1
cell_val = worksheet_name.cell_value(row_index,cell_index)
cs


 xlwt - 엑셀 파일 데이터 쓰기 라이브러리

xlwt의 경우에는 딱히 많은 것을 생각할 필요는 없고, 엑셀에 쓸 내용만 넣어주면 됩니다.


사용 예제#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import xlwt
 
workbook = xlwt.Workbook(encoding='utf-8')
workbook.default_style.font.height = 15*15
 
worksheet = workbook.add_sheet('ex1')
 
font_style = xlwt.easyxf('font:height 280;')
worksheet.row(0).set_style(font_style)
 
worksheet.write_merge(0200"Example1")
worksheet.write_merge(0013"Example2")
worksheet.write_merge(0046"Example3")
worksheet.write(11"Test1")
worksheet.write(12"Test2")
worksheet.write(13"Test3")
 
workbook.save('example2.xls')
cs


파일 쓰기#

파일을 쓰기 위한 설정.

1
workbook = xlwt.Workbook(encoding='utf-8')
cs


데이터를 처리한 내용을 저장하기.

1
workbook.save(filename)
cs


데이터 시트 다루기#

데이터 시트 생성.

1
worksheet = workbook.add_sheet(sheetname)
cs


데이터 다루기

줄의 폰트 스타일 설정.

1
worksheet.row(index).set_style(font_size)
cs


칸 너비 설정.

1
worksheet.col(index).width = 256*(len(key)+1)
cs


셀 칸에 값 입력.

1
worksheet.write(row_num,col_num,value)

cs


셀 칸의 병합 및 값 입력.

1
worksheet.write_merge(top_row_num,bottom_row_num,left_col_num,right_col_num,value)
cs


댓글