XlsxWriter 모듈이란?
XlsxWriter는 파이썬에서 엑셀(.xlsx) 파일을 다룰 수 있게 해주는 대표적인 라이브러리입니다. 이 모듈을 사용하면 엑셀 파일 생성, 데이터 작성, 산술 연산뿐만 아니라 차트(그래프) 그리기까지 다양한 작업을 프로그래밍 방식으로 수행할 수 있습니다.
먼저 아래 명령어로 XlsxWriter를 설치합니다.
pip install XlsxWriter
전체 예제 코드
다음 예제는 과목별 중간·기말 시험 점수 데이터를 엑셀 시트에 작성하고, 두 데이터 계열을 비교할 수 있는 상승-하락 막대(Up-Down Bars)가 포함된 꺾은선 차트를 그리는 코드입니다.
# xlsxwriter 모듈 임포트
import xlsxwriter
# Workbook()은 필수 인자로 생성할 파일명을 받습니다.
workbook = xlsxwriter.Workbook('updown_chart.xlsx')
# add_worksheet() 메서드로 새 워크시트를 추가합니다.
worksheet = workbook.add_worksheet()
# add_format() 메서드로 셀 서식 객체를 생성합니다.
# 여기서는 이탤릭체 서식 객체를 생성합니다.
italic = workbook.add_format({'italic': 1})
# 차트가 참조할 워크시트 데이터를 준비합니다.
Data1 = ['Subject', 'Mid Exam Score', 'End Exam Score']
Data2 = [
["Math", "Physics", "Computer", "Hindi", "English", "chemistry"],
[90, 78, 60, 80, 60, 90],
[45, 39, 30, 40, 30, 60]
]
# 'A1' 셀부터 한 행의 데이터를 이탤릭체 서식으로 작성합니다.
worksheet.write_row('A1', Data1, italic)
# 'A2', 'B2', 'C2' 셀부터 각각 한 열씩 데이터를 작성합니다.
worksheet.write_column('A2', Data2[0])
worksheet.write_column('B2', Data2[1])
worksheet.write_column('C2', Data2[2])
# B열과 C열의 너비를 설정합니다.
worksheet.set_column('B:C', 15)
# add_chart() 메서드로 워크시트에 추가할 차트 객체를 생성합니다.
# 여기서는 꺾은선(line) 차트 객체를 생성합니다.
chart1 = workbook.add_chart({'type': 'line'})
# 상승-하락 막대(Up-Down Bars)를 추가합니다.
chart1.set_up_down_bars()
# add_series() 메서드로 차트에 데이터 계열을 추가합니다.
# 첫 번째 계열 구성: '=Sheet1!$A$1'은 ['Sheet1', 0, 0]과 동일합니다.
# 주의: '='와 'Sheet1' 사이, 'Sheet1'과 '!' 사이에는 공백을 넣으면 안 됩니다.
# 공백이 들어가면 경고가 발생합니다.
chart1.add_series({
'categories': '=Sheet1!$A$2:$A$7',
'values': '=Sheet1!$B$2:$B$7',
})
# 두 번째 계열을 구성합니다.
chart1.add_series({
'categories': '=Sheet1!$A$2:$A$7',
'values': '=Sheet1!$C$2:$C$7',
})
# 차트 제목을 추가합니다.
chart1.set_title({'name': 'Exam Score Distribution'})
# x축 레이블을 추가합니다.
chart1.set_x_axis({'name': 'Subjects'})
# y축 레이블을 추가합니다.
chart1.set_y_axis({'name': 'Marks'})
# 엑셀 차트 스타일을 설정합니다.
chart1.set_style(11)
# 지정된 오프셋 값으로 차트를 워크시트에 삽입합니다.
# 차트의 왼쪽 위 모서리는 D2 셀에 고정됩니다.
worksheet.insert_chart('D2', chart1, {'x_offset': 20, 'y_offset': 5})
# 마지막으로 close() 메서드로 엑셀 파일을 저장하고 닫습니다.
workbook.close()코드 단계별 설명
1. 워크북과 워크시트 생성
xlsxwriter.Workbook()에 원하는 파일명을 전달해 워크북 객체를 만들고, add_worksheet()로 실제 데이터가 들어갈 워크시트를 추가합니다.
2. 서식(Format) 객체 활용
add_format() 메서드를 사용하면 글꼴 스타일, 굵게, 기울임 등 다양한 셀 서식을 정의할 수 있습니다. 예제에서는 헤더 행을 이탤릭체로 표시하기 위해 {'italic': 1} 옵션을 사용했습니다.
3. 데이터 작성
write_row()는 지정한 셀부터 가로 방향으로 데이터를 쓰고, write_column()은 세로 방향으로 데이터를 씁니다. set_column()으로 열 너비를 조절하면 가독성이 좋아집니다.
4. 차트 생성과 데이터 계열 추가
add_chart({'type': 'line'})으로 꺾은선 차트를 만들고, add_series()로 카테고리(x축)와 값(y축) 범위를 지정합니다. 이때 셀 범위 문자열에 공백이 포함되면 경고가 발생하므로 =Sheet1!$A$2:$A$7 형태로 정확히 입력해야 합니다.
5. 상승-하락 막대(Up-Down Bars)
set_up_down_bars()를 호출하면 두 데이터 계열 사이의 증감을 시각적으로 보여주는 막대가 자동으로 추가됩니다. 중간 점수 대비 기말 점수의 상승·하락을 한눈에 파악할 때 유용합니다.
6. 차트 꾸미기와 삽입
set_title(), set_x_axis(), set_y_axis()로 제목과 축 레이블을 지정하고, set_style()로 엑셀 기본 차트 스타일을 적용합니다. 마지막으로 insert_chart()로 차트를 특정 셀(D2)에 배치하며, 오프셋 값을 통해 미세하게 위치를 조정할 수 있습니다.
실행 결과
스크립트를 실행하면 현재 디렉터리에 updown_chart.xlsx 파일이 생성됩니다. 파일을 열면 A~C열에 과목별 점수 데이터가 정리되어 있고, D2 셀 위치부터 중간·기말 점수를 비교하는 꺾은선 차트가 삽입되어 있는 것을 확인할 수 있습니다.