* Win32com.client로 엑셀 다루기 포스팅
1편 : 2021.11.23 - [코딩/업무자동화] - [파이썬/업무자동화] win32com.client 사용해서 엑셀 사용하기 기초
2편 : 2021.12.14 - [코딩/업무자동화] - [파이썬/업무자동화] win32com.client 사용해서 엑셀 시트 다루기
3편 : 2021.12.22 - [코딩/업무자동화] - [파이썬/업무자동화] win32com.client 사용해서 엑셀 차트 다루기
4편 : 2021.12.30 - [코딩/업무자동화] - [파이썬/업무자동화] win32com.client 사용해서 엑셀 셀서식 지정하기
5편 : 2022.01.02 - [코딩/업무자동화] - [파이썬/업무자동화] win32com.client 사용해서 엑셀 영역 선택하는 방법 4가지
6편 : 2022.01.17 - [코딩/업무자동화] - [파이썬/업무자동화] win32com.client 엑셀 파일 저장 및 옵션
이번 포스팅에서는 win32com.client를 통해 엑셀 차트를 다루는 법 정리하려고 한다. 공부하다보니 Microsoft에서 제공하는 win32com(pywin32)나 엑셀 VBA 같은 언어에서 제공하는 메서드, 파라미터는 모두 동일하다. 즉, 엑셀 VBA를 할줄알면 파이썬 win32com.client도 쉽게 다룰 수 있다. 이 내용은 다음 포스팅에서도 정리해볼 예정이다.
1. import
import win32com.client
import하는 부분은 다른 글들과 동일한 부분이므로 생략
2. 엑셀 App 객체 생성
excel = win32com.client.Dispatch("Excel.Application") #엑셀 프로그램을 객체로 생성
excel.Visible = True #실행과정 보이게
3. 기존 있는 파일을 Workbook 객체로 생성, 활성화 된 시트를 객체로 생성
#기존 존재하는 data파일을 Workbook 객체로 생성
wb = excel.Workbooks.Open(r"C:\Users\Desktop\VS CODE\Project\17. win32com\chart_data.xlsx")
#활성화되어잇는 시트를 객체로 생성
ws = wb.ActiveSheet
참고로 "chart_data.xlsx"의 파일 데이터는 아래와 같음
4. 빈 차트 양식 생성
ws.Shapes.AddChart().Select() #차트를 새로 추가하고 선택
위와 같이 코드 작성하면 아래이미지처럼 빈 차트 양식 생성
5. 차트 Data 영역 설정
excel.ActiveChart.SetSourceData(Source=ws.Range("A1:B9"))
위 엑셀 데이터 중 "A1:B9" 영역을 데이터 영역으로 설정한다. 영역을 설정하면 아래와 같이 막대 차트가 생성 된다.
위 코드가 실행되기 위해서는 차트가 선택되어 있어야 한다. 위 코드에서 Select( )가 실행되어있으면 선택되어 있는 상태이다.
6. 차트 설정시 옵션
위 4번에서 다뤘던 AddChart( ) 메서드를 활용하면 차트 종류, 위치 등을 다양하게 설정 가능. 먼저 Microsoft에서 제공하는 Syntax를 확인.
아래 내용은 C# 구조이지만 같은 Microsoft에서 제공하는 라이브러리라 그런지 메서드의 파라미터 순서는 같음
(엑셀 VBA에서도 동일함)
1) 차트 종류 변경
chartType 은 아래 Microsoft Enumeration 문서에 옵션값을 다루고 있음.
위에서 생성했던 기본 막대 차트는 옵션 Value값이 4임. 만약 꺾은선으로 바꿔보려면 65로 수정하면 된다.
chart = ws.Shapes.AddChart(65).Select() #꺾은선 차트 생성
excel.ActiveChart.SetSourceData(Source=ws.Range("A1:B9")) #데이터 범위 설정
2) 차트 위치 및 크기
위 Syntax 문서에 따르면 AddChart(차트타입, 위치값(왼쪽 부터 offset), 위치값(위 부터offset), 가로크기, 세로크기)
임의로 코드를 작성해서 200*200 차트를 생성하면
chart = ws.Shapes.AddChart(4,100,100,200,200).Select() #막대 차트 200*200 크기 생성
excel.ActiveChart.SetSourceData(Source=ws.Range("A1:B9")) #데이터 범위 설정
임의로 코드를 작성해서 200*200 차트를 생성하면 아래와 같은 결과 출력
7. 차트 제목 및 범례 설정
1) 제목 설정
excel.ActiveChart.HasTitle = True #차트 제목 나오게(False면 안보임)
excel.ActiveChart.Charttitle.Text = "국어 과목" #차트 제목 설정
excel.ActiveChart.Charttitle.Characters.Font.Size=14 #차트 제목 글씨 크기
excel.ActiveChart.Charttitle.Characters.Font.ColorIndex = 5 #차트 제목 색상(파란색)
excel.ActiveChart.Charttitle.Characters.Font.Bold=True #제목 굵게
2) 범례 설정
excel.ActiveChart.HasLegend = True #차트 범례 보이게(Fasle면 안보임)
excel.ActiveChart.Legend.Font.Size = 15 #차트 범례 글씨 크기
excel.ActiveChart.Legend.Font.Bold = True #차트 범례 굵게
excel.ActiveChart.Legend.Font.ColorIndex = 5 #차트 범례색상 설정(파란색)
'코딩 > 업무자동화' 카테고리의 다른 글
[파이썬/업무자동화] win32com.client 사용해서 엑셀 영역 선택하는 방법 4가지 - Range, UsedRange, CurrentRegion, SpecialCells (0) | 2022.01.02 |
---|---|
[파이썬/업무자동화] win32com.client 사용해서 엑셀 셀서식 지정하기 (0) | 2021.12.30 |
[책 소개] 사장님 몰래 하는 파이썬 업무자동화 (2) | 2021.12.20 |
[파이썬/업무자동화] win32com.client 사용해서 엑셀 시트 다루기 (0) | 2021.12.14 |
[파이썬/업무자동화] win32com.client 모듈을 활용한 Outlook 메일 자동보내기 (0) | 2021.12.07 |