首页 > 解决方案 > 获取 Excel 图表详细信息到 Python

问题描述

我有一个 excel 文件,其中有单独的表格上的图表,并且在上面绘制了多个系列。我需要做的是使用 python 绘制完全相同的范围。我的意思是以下范围:

在此处输入图像描述

有没有办法通过 python 访问这些信息?

标签: pythonexcellinuxopenpyxl

解决方案


试试这个代码:

所有工作表的选项 1

import win32com.client as client


def series_output(chart):
    print(f'\tChart name is {chart.Name}')
    for sc in chart.SeriesCollection():
        print(f'\t\t{sc.Name}: {sc.Formula}')


xl = client.Dispatch('Excel.Application')
wb = xl.Workbooks.Open(r'c:\test\Charts.xlsm')
for sh in wb.Sheets:
    print(f'Processed sheet {sh.Name}')
    if sh.Type == -4100:  # it's chart sheet
        series_output(sh)
    elif sh.Type == -4167:  # it's worksheet with (possible) charts
        for ch in sh.ChartObjects():
            series_output(ch.Chart)
wb.Close(False)  # don't save & close workbook
xl.Quit()

特定工作表的选项 2

import win32com.client as client


def series_output(chart):
    print(f'\tChart name is {chart.Name}')
    for sc in chart.SeriesCollection():
        print(f'\t\t{sc.Name}: {sc.Formula}')


xl = client.Dispatch('Excel.Application')
wb = xl.Workbooks.Open(r'c:\test\Charts.xlsm')  # your own path\name
sh = wb.Sheets('Sheet1')  # your own worksheet name
print(f'Processed sheet {sh.Name}')
for ch in sh.ChartObjects():
    series_output(ch.Chart)
wb.Close(False)  # don't save & close workbook
xl.Quit()

推荐阅读