Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 XlsxWriter 모듈로 엑셀 시트에 다양한 스타일 차트 그리기

XlsxWriter는 파이썬에서 엑셀 파일을 다룰 수 있게 해주는 강력한 라이브러리입니다. 이 모듈을 사용하면 엑셀 파일 생성, 데이터 작성, 산술 연산은 물론 다양한 형태의 그래프(차트) 그리기까지 손쉽게 처리할 수 있습니다.

이번 글에서는 XlsxWriter를 활용해 하나의 워크북 안에 여러 개의 차트를 생성하고, 엑셀이 기본으로 제공하는 내장 스타일(built-in style) 48가지를 각각 적용하는 방법을 알아보겠습니다.

예제 코드

아래 예제는 세로 막대형(column) 차트와 영역형(area) 차트 두 가지 유형에 대해 각각 48개의 내장 스타일을 일괄 적용하여 한눈에 비교할 수 있는 워크시트를 만드는 코드입니다.

# xlsxwriter 모듈 임포트
import xlsxwriter

# Workbook()은 필수 인자로 생성할 파일명을 받습니다.
workbook = xlsxwriter.Workbook('chart_styles.xlsx')

# 스타일을 보여줄 차트 유형 목록
chart_types = ['column', 'area']

for chart_type in chart_types:
    # add_worksheet() 메서드로 각 차트 유형별 워크시트 추가
    worksheet = workbook.add_worksheet(chart_type.title())

    # 화면 확대/축소 비율 설정
    worksheet.set_zoom(30)

    # 스타일 번호 초기화
    style_number = 1

    # 48개의 내장 스타일 차트를 생성합니다.
    # 각 차트의 크기는 15행 × 8열 간격으로 배치됩니다.
    for row_num in range(0, 90, 15):
        for col_num in range(0, 64, 8):
            # add_chart() 메서드로 차트 객체 생성
            chart = workbook.add_chart({'type': chart_type})

            # add_series() 메서드로 차트에 데이터 계열 추가
            chart.add_series({'values': '=Data!$A$1:$A$6'})

            # 차트 제목 설정
            chart.set_title({'name': 'Style %d' % style_number})

            # 차트 범례 숨기기
            chart.set_legend({'none': True})

            # 엑셀 차트 스타일 지정 (1~48)
            chart.set_style(style_number)

            # 차트를 워크시트의 해당 셀 위치에 삽입
            # 차트의 왼쪽 상단 모서리가 지정한 셀 위치에 고정됩니다.
            worksheet.insert_chart(row_num, col_num, chart)

            # 스타일 번호 증가
            style_number += 1

# 데이터를 작성할 별도의 워크시트 생성
data_worksheet = workbook.add_worksheet('Data')

# 차트에 사용할 데이터 리스트
data = [10, 40, 50, 20, 10, 50]

# 'A1' 셀부터 세로 방향으로 데이터 작성
data_worksheet.write_column('A1', data)

# 데이터 시트는 숨김 처리
data_worksheet.hide()

# close() 메서드로 엑셀 파일 저장 및 종료
workbook.close()

코드 주요 단계 설명

1. 워크북 및 워크시트 생성

xlsxwriter.Workbook()에 원하는 파일명을 전달해 워크북 객체를 만들고, add_worksheet() 메서드로 차트 종류별로 워크시트를 추가합니다. 여기서는 'Column'과 'Area'라는 이름의 시트가 각각 생성됩니다.

2. 차트 객체 생성과 데이터 계열 추가

add_chart() 메서드에 {'type': chart_type} 옵션을 전달해 차트 객체를 만든 뒤, add_series() 메서드로 Data 시트의 A1~A6 범위 값을 차트 데이터로 연결합니다.

3. 내장 스타일 자동 적용

set_style() 메서드에 1부터 48까지의 숫자를 순서대로 넘기면 엑셀이 제공하는 서로 다른 48가지 색상·디자인 테마가 각 차트에 적용됩니다. set_title()로 스타일 번호를 제목에 표시하고, set_legend()로 불필요한 범례를 제거해 가독성을 높였습니다.

4. 차트 배치와 데이터 시트 숨기기

insert_chart(row, col, chart)를 호출하면 차트의 왼쪽 위 모서리가 지정한 셀 위치에 고정된 채 삽입됩니다. 이 예제에서는 15행 × 8열 간격으로 배치해 겹치지 않게 정렬했습니다. 마지막으로 hide() 메서드로 원본 데이터 시트를 숨겨 결과물만 깔끔하게 확인할 수 있도록 했습니다.

스크립트 실행이 끝나면 chart_styles.xlsx 파일이 생성되며, 파일을 열면 두 개의 시트에서 48가지 스타일이 적용된 차트들을 한 번에 비교해볼 수 있습니다.