파이썬(python)/Python 엑셀
[Python] 엑셀의 Chart 읽고 Categories(카테고리) 출력
안산드레아스
2024. 8. 26. 16:29
반응형
엑셀의 차트의 카테코리 정보를 출력.
아래와 같이 data가 아닌, categories를 출력하는 코드.
결과
반응형
코드
import openpyxl
from openpyxl.chart import Reference, BarChart, LineChart
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_and_categories(chart):
# Access all chart types within the composite chart
bar_chart, line_chart = read_composite_chart(chart)
# Print Bar Chart series titles and categories
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}")
# Print Bar Chart categories
if bar_chart.series[0].cat:
print("Bar Chart Categories:")
for label in bar_chart.series[0].cat.strRef.strCache.pt:
print(label.v)
# Print Line Chart series titles and categories
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}")
# Print Line Chart categories
if line_chart.series[0].cat:
print("Line Chart Categories:")
for label in line_chart.series[0].cat.strRef.strCache.pt:
print(label.v)
# 엑셀 파일 열기
wb = openpyxl.load_workbook('C:\\temp\\test.xlsx')
sheet = wb['Sheet1'] # 원하는 시트 이름으로 변경
# 차트 객체 가져오기 (첫 번째 차트로 가정)
chart = sheet._charts[0]
# 시리즈 와 카테고리 출력
print_chart_series_and_categories(chart)
# 엑셀 파일 닫기
wb.close()
반응형