※ OpenPyxl 관련 포스팅 모음
2021.03.19 - [코딩/업무자동화] - [파이썬/업무자동화] Openpyxl로 엑셀 함수 사용하기, 엑셀 수식 넣기
2021.08.21 - [코딩/업무자동화] - [파이썬/업무자동화] Openpyxl 통해 엑셀 함수 사용하기 2편
2021.08.30 - [코딩/업무자동화] - [파이썬/업무자동화] 엑셀에 입력 된 파일명 따라 이미지 삽입하기 - openpyxl
2021.10.04 - [코딩/업무자동화] - [파이썬/업무자동화] openpyxl.style 사용법 정리
2021.10.16 - [코딩/업무자동화] - [파이썬/업무자동화] openypyxl 통해 엑셀 조건부 서식 적용하기
2021.11.09 - [코딩/업무자동화] - [파이썬/업무자동화] openpyxl 시트 조작 방법 4가지
openpyxl Chart 사용법에 대한 정리해보았다.
Bar chart 사용법 기준으로 정리하였으며, Openpyxl 공식 Tutorial을 참고하였음.
(https://openpyxl.readthedocs.io/en/stable/charts/bar.html)
1. data 추가
<코드>
import openpyxl as op #Openpyxl import
wb = op.Workbook() #Workbook 객체 생성
ws = wb.active #현재 활성화되어있는 시트 선택
#성적표 data를 리스트로 저장
data = [('이름', "국어", "영어", "수학"),
('YB', 100, 100, 100),
('SW', 90, 80, 100),
('EJ', 90, 90, 90)
]
#위 데이터를 행별로 추가
for row in data:
ws.append(row)
#저장
wb.save("성적표.xlsx")
wb.close()
<결과>
2. Openpyxl chart 사용법
위 "성적표.xlsx"파일을 활용해서 2D 막대차트를 그리는 방법을 요약.
<코드>
import openpyxl as op #Openpyxl import
from openpyxl.chart import BarChart, Series, Reference #Openpyxl chart import
path = r"C:\Users\Yongbeom Jeong\Desktop\VS CODE"
wb= op.load_workbook(path+"/"+"성적표.xlsx")
ws = wb.active
#BarChart 생성
chart1 = BarChart() #차트 객체 생성
chart1.type = "col" #col : 세로막대 or bar : 가로막대
chart1.style = 11 #차트 색상 스타일
chart1.title = "국영수 성적표" #차트 제목
chart1.y_axis.title = '점수' #y축 이름
chart1.x_axis.title = '학생이름' #x축 이름
#data 영역 설정(점수)
data = Reference(ws, min_col=2, min_row=1, max_row=4, max_col=4)
#cat 영역 설정(학생이름)
cats = Reference(ws, min_col=1, min_row=2, max_row=4)
chart1.add_data(data, titles_from_data=True) #차트 영역에 데이터 추가, titles_from_data는 범례사용 여부
chart1.set_categories(cats) #차트 영역에 카테고리 설정(학생이름)
chart1.shape = 20
ws.add_chart(chart1, "A10")
wb.save("성적표차트.xlsx")
<결과>
1) 막대차트에 대한 객체를 생성 함.(chart1)
chart1 = BarChart() #차트 객체 생성
2) 차트 형태를 설정 함.(chart1.type)
chart1.type = "col" #col : 세로막대 or bar : 가로막대
- 세로 막대 형태의 차트로 설정 함. 값은 "col" or "bar"
- "bar"로 설정할 경우 아래 모양과 같이 출력 됨.
3) 차트의 데이터 영역을 설정 함.
#data 영역 설정(점수)
data = Reference(ws, min_col=2, min_row=1, max_row=4, max_col=4)
- 실제 차트의 data(위 그래프에서는 점수)가 될 영역을 설정 함.
- ws는 데이터가 있는 Worksheet 변수
- 위 성적표의 경우 아래 영역과 같음.
- min_col = 2, max_col = 4(2열부터 4열)
min_row = 1, max_row = 4(1행부터 4행)
4) 차트의 category를 설정 함.
#cat 영역 설정(학생이름)
cats = Reference(ws, min_col=1, min_row=2, max_row=4)
- 실제 차트의 카테고리(위 그래프에서 학생이름)이 될 영역 설정
- ws는 데이터가 있는 Worksheet 변수
- min_col = 1 (1열만)
- min_row = 2, max_row=4 (2행부터 4행)
5) 위에서 설정한 data와 cats을 chart1 객체에 입력 함.
chart1.add_data(data, titles_from_data=True) #차트 영역에 데이터 추가, titles_from_data는 범례사용 여부
chart1.set_categories(cats) #차트 영역에 카테고리 설정(학생이름)
-. add_data는 말그대로 data 를 추가하는 부분
titles_from_data는 범례 사용여부를 결정 함. False로 설정하면 아래와 같이 출력 됨.(원래 수학,국어,영어 부분)
- 범례가 없으면 그래프도 제대로 구분되어 출력되지 않음. True 설정.
6) 실제 그려진 차트를 Worksheet(=ws)에 추가하는 부분
- chart1 객체를 "A10" 위치에 추가 함.
ws.add_chart(chart1, "A10")
'코딩 > 업무자동화' 카테고리의 다른 글
[책 출판 안내]사장님 몰래하는 파이썬 업무자동화 (0) | 2024.01.10 |
---|---|
[파이썬/업무자동화] win32com.client 엑셀 파일 저장 및 옵션 (0) | 2022.01.17 |
[파이썬/업무자동화] win32com.client 사용해서 엑셀 영역 선택하는 방법 4가지 - Range, UsedRange, CurrentRegion, SpecialCells (0) | 2022.01.02 |
[파이썬/업무자동화] win32com.client 사용해서 엑셀 셀서식 지정하기 (0) | 2021.12.30 |
[파이썬/업무자동화] win32com.client 사용해서 엑셀 차트 다루기 (0) | 2021.12.22 |