반응형

 

 

결과

아래와 같은 그래프가 있을 때 결과가 잘 출력된다.

 

 

코드

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

 

[Python] 엑셀 Chart Series (legend)의 range값 변경

만약 기존의 엑셀에 있는 Chart 정보를 읽고 출력하는 방법은 아래를 참고.https://ansan-survivor.tistory.com/1980 [Python] 엑셀의 Chart 읽고 Series (legend)의 제목과 range값 출력결과아래와 같은 그래프가 있을

ansan-survivor.tistory.com

 

 

 

 

반응형

+ Recent posts