from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference
# 새 워크북 생성 및 활성화된 워크시트 선택
wb = Workbook()
ws = wb.active
# 데이터 추가
data = [
['Category', 'Value1', 'Value2'],
['A', 10, 40],
['B', 20, 30],
['C', 30, 20],
['D', 40, 10]
]
for row in data:
ws.append(row)
# 차트에 사용할 데이터 범위 지정 (값 범위)
values = Reference(ws, min_col=2, min_row=1, max_col=3, max_row=5)
# 차트 객체 생성
bar_chart = BarChart()
bar_chart.add_data(values, titles_from_data=True)
# 차트의 X축에 대한 범주 범위 지정 (레이블 범위)
categories = Reference(ws, min_col=1, min_row=2, max_row=5)
bar_chart.set_categories(categories)
# 차트 제목 설정
bar_chart.title = "Sample Bar Chart"
# 차트를 워크시트에 추가 (차트가 나타날 위치 지정)
ws.add_chart(bar_chart, "E5")
# 워크북 저장
wb.save("bar_chart_example.xlsx")
▪ 결과 값
엑셀 파일 구성 ' 예제 코드 01 실행 후 생성된 파일 정보' 이미지 참조
예제 코드 02 - 선 그래프(Line Chart)
▪chart 모듈 사용(LineChart, Reference 클래스)
from openpyxl import Workbook
from openpyxl.chart import LineChart, Reference
# 새 워크북 생성 및 활성화된 워크시트 선택
wb = Workbook()
ws = wb.active
# 데이터 추가
data = [
['Month', 'Value1', 'Value2'],
['Jan', 10, 40],
['Feb', 20, 30],
['Mar', 30, 20],
['Apr', 40, 10]
]
for row in data:
ws.append(row)
# 차트에 사용할 데이터 범위 지정 (값 범위)
values = Reference(ws, min_col=2, min_row=1, max_col=3, max_row=5)
# 차트 객체 생성
line_chart = LineChart()
line_chart.add_data(values, titles_from_data=True)
# 차트의 X축에 대한 범주 범위 지정 (레이블 범위)
categories = Reference(ws, min_col=1, min_row=2, max_row=5)
line_chart.set_categories(categories)
# 차트 제목 설정
line_chart.title = "Sample Line Chart"
# 차트를 워크시트에 추가 (차트가 나타날 위치 지정)
ws.add_chart(line_chart, "E5")
# 워크북 저장
wb.save("line_chart_example.xlsx")
▪ 결과 값
엑셀 파일 구성 ' 예제 코드 02 실행 후 생성된 파일 정보' 이미지 참조
예제 코드 03 - 원형 그래프(Pie Chart)
▪ chart 모듈 사용(PieChart, Reference 클래스)
from openpyxl import Workbook
from openpyxl.chart import PieChart, Reference
# 새 워크북 생성 및 활성화된 워크시트 선택
wb = Workbook()
ws = wb.active
# 데이터 추가
data = [
['Category', 'Value'],
['A', 30],
['B', 40],
['C', 20],
['D', 10]
]
for row in data:
ws.append(row)
# 차트에 사용할 데이터 범위 지정 (값 범위)
values = Reference(ws, min_col=2, min_row=2, max_row=5)
# 차트 객체 생성
pie_chart = PieChart()
pie_chart.add_data(values, titles_from_data=False)
# 차트의 X축에 대한 범주 범위 지정 (레이블 범위)
categories = Reference(ws, min_col=1, min_row=2, max_row=5)
pie_chart.set_categories(categories)
# 차트 제목 설정
pie_chart.title = "Sample Pie Chart"
# 차트를 워크시트에 추가 (차트가 나타날 위치 지정)
ws.add_chart(pie_chart, "E5")
# 워크북 저장
wb.save("pie_chart_example.xlsx")
▪ 결과 값
엑셀 파일 구성 '예제 코드 03 실행 후 생성된 파일 정보' 이미지 참조
NOTE : 왜 `Reference`를 사용하는가?
동적 데이터 참조:
▪ Reference 객체를 사용하여 엑셀 시트의 특정 범위에 있는 데이터를 동적으로 참조하기 위함
▪엑셀에서 특정 셀 범위에 있는 데이터는 시트 내에서의 위치와 연관되어 있기 때문에 직접 값을 지정하는 대신 그 위치를 참조하는 것을 권장
시트와의 통합:
▪차트는 엑셀 시트의 지정 셀 데이터를 기반으로 만들어지며, 이 데이터는 시트에서 계속 업데이트될 수 있음. 따라서, 데이터 범위를 Reference를 통해 설정하면 엑셀 시트의 변화에 따라 차트도 자동으로 업데이트하기 위함
직관적인 셀 범위 지정:
▪Reference를 사용하면 min_row, max_row, min_col, max_col과 같은 파라미터를 통해 차트에 사용할 데이터 범위를 명확하게 지정할 수 있음. 이런 방식으로 엑셀 시트에서 데이터를 시각적으로 이해하고 관리하기 쉬움