파이썬(python)/Python 엑셀
[Python] 엑셀의 Chart 읽고 Series (legend)의 제목과 range값 출력
안산드레아스
2024. 8. 20. 19:18
반응형
결과
아래와 같은 그래프가 있을 때 결과가 잘 출력된다.
코드
import openpyxl
from openpyxl.chart import Reference, BarChart, LineChart
# bar와 line이 합쳐진 복합 차트.
def read_composite_chart(chart):
bar_chart = None
line_chart = None
for ch in chart._charts:
if isinstance(ch, BarChart):
bar_chart = ch
elif isinstance(ch, LineChart):
line_chart = ch
return bar_chart, line_chart
def print_chart_series(chart):
# 차트 객체의 모든 차트 유형 접근
bar_chart, line_chart = read_composite_chart(chart)
# 바 차트 시리즈의 제목 출력
if bar_chart:
print("Bar Chart Series Titles:")
for i, series in enumerate(bar_chart.series):
barTitle = series.tx.v if series.tx and series.tx.v else series.title
bar_val_ref = series.val.numRef.f if series.val and series.val.numRef else None
print(f"title: {barTitle}")
print(f"Bar Chart Series Values Reference: {bar_val_ref}")
# 라인 차트 시리즈의 제목 출력
if line_chart:
print("Line Chart Series Titles:")
for i, series in enumerate(line_chart.series):
lineTitle = series.tx.v if series.tx and series.tx.v else series.title
line_val_ref = series.val.numRef.f if series.val and series.val.numRef else None
print(f"title: {lineTitle}")
print(f"Line Chart Series Values Reference: {line_val_ref}")
# 엑셀 파일 열기
wb = openpyxl.load_workbook('C:\\_workspace\\_SS_MX\\_LicenseUsageCheck\\Siemens_License_Report_Server_Template.xlsx')
sheet = wb['Sheet1'] # 원하는 시트 이름으로 변경
# 차트 객체 가져오기 (첫 번째 차트로 가정)
chart = sheet._charts[0]
# 시리즈 제목 출력
print_chart_series(chart)
# 엑셀 파일 닫기
wb.close()
읽은 차트의 Series를 수정하려면 아래를 참고.
https://ansan-survivor.tistory.com/1981
반응형