[Python] XlsxWriter 모듈

2022. 12. 12. 16:51

데이터에서 필요한 정보만 뽑아서 엑셀에 저장하려고 한다.

 

엑셀에 써야할 라인은 2000만 정도였다.

 

openpyxl을 사용했으며,

서버에 메모리가 몇 백만 라인을 쓰고 꽉 차서 더이상 진행되지 않았다.

 

검색해보니 xlsxwriter 모듈이 있었고

속도도 openpyxl보다 빠르며 메모리 옵션이 있어 데이터를 메모리에 저장하지 않고 쓸 수 있다.

엑셀파일을 읽지는 못하고 쓸 수만 있는 단점이 있지만 지금은 상관없다..

 

win32com도 있지만 서버가 리눅스여서 패스했다.

 

xlsxwriter 사용법

import xlsxwriter

workbook = xlsxwriter.Workbook('작업 경로',
                              {'constant_memory': True})
worksheet = workbook.add_worksheet('시트 제목')

title = ['열 제목1', '열 제목2', '열 제목3', ... , '열 제목n']
for t in title:
    worksheet.write(0,title.index(t), t)

cnt = 0

for row in tqdm(xlsData):
    cnt += 1
    for col in row:
        worksheet.write(cnt, row.index(col), col)

workbook.close()

이때 xlsData는 이중 리스트로

[[행 데이터1, 행 데이터2, ..., 행 데이터 n], [행 데이터1, 행 데이터2, ..., 행 데이터 n], ... , [행 데이터1, 행 데이터2, ..., 행 데이터 n]]

위와 같이 선언해줬다.

 

{'constant_memory': True} 옵션으로 메모리를 사용하지 않을 수 있다.