为Excel添加图表

这段代码展示了如何使用Python的openpyxl库遍历指定文件夹中的Excel文件,对每个文件创建折线图并保存。它首先获取文件夹中的文件名,然后读取每个文件的工作簿,引用数据创建LineChart对象,设置图例、轴标题,并修改样式,最后将图表添加到工作表并保存文件。
摘要由CSDN通过智能技术生成

代码整体

import os
from openpyxl import load_workbook
from openpyxl.chart import LineChart, Reference

# 设置目标文件夹路径
path = './各部门利润表汇总/'

# 获取文件夹下的所有文件名
file_list = os.listdir(path)
# 遍历文件名列表,取得每一个文件名
for file_name in file_list:
    # 拼接文件路径
    file_path = path + file_name
    print('正在处理:' + file_name)
    # 读取工作簿
    wb = load_workbook(file_path)
    # 读取工作簿中的活跃工作表
    ws = wb.active

    # 实例化 LineChart() 类
    chart = LineChart()
    # 引用工作表的部分数据
    data = Reference(worksheet=ws, min_row=3, max_row=9, min_col=1, max_col=5)
    # 添加被引用的数据到 LineChart 对象
    chart.add_data(data, from_rows=True, titles_from_data=True)
    # 添加 LineChart 对象到工作表中,指定生成折线图的位置
    ws.add_chart(chart, "C12")

    # 引用工作表的表头数据
    cats = Reference(worksheet=ws, min_row=2, max_row=2, min_col=2, max_col=5)
    # 设置类别轴的标签
    chart.set_categories(cats)
    # 设置 x 轴的标题
    chart.x_axis.title = "季度"
    # 设置 y 轴的标题
    chart.y_axis.title = "利润"
    # 改变折线图的样式,范围在 1~48
    chart.style = 48

    # 保存文件
    wb.save(file_path)

一、循环打开Excel文件

首先设置目标文件夹路径path,然后使用os.listdir(path)获取该文件夹下所有的“文件名”,形成列表,然后遍历列表,与path组合成完整的文件路径,读取工作簿wb,读取工作簿中活跃的工作表ws。

import os
from openpyxl import load_workbook
from openpyxl.chart import LineChart, Reference

# 设置目标文件夹路径
path = './各部门利润表汇总/'

# 获取文件夹下的所有文件名
file_list = os.listdir(path)
# 遍历文件名列表,取得每一个文件名
for file_name in file_list:
    # 拼接文件路径
    file_path = path + file_name
    print('正在处理:' + file_name)
    # 读取工作簿
    wb = load_workbook(file_path)
    # 读取工作簿中的活跃工作表
    ws = wb.active

二、折线图绘制

步骤一:确认图的类型。
创建LineChart 对象(折线图对象)。(补充:BarChart——条形图)

步骤二:引用表格的数据。
创建Reference 对象引用表格的数据,本案例引用了工作表对象ws中第3行到第9行、第1列到第5列矩形区域的数据。
参数worksheet指明被引用数据所在的工作表对象。
参数min_row、max_row、min_col、max_col:指明被引用数据的区域。

然后调用方法LineChart对象.add_data()将被引用的数据添加至LineChart 对象。
第一个参数是被引用的数据,它是Reference对象,
第二个参数from_rows(中文翻译为:来自行)
当from_rows设置为True时,引用区域的每行数据绘制一条折线。
当from_rows设置为False时,引用区域的每列数据绘制一条折线。
第三个参数titles_from_data(图例的名称来自数据)
当titles_from_data = True时,被引用的数据的首列用于命名图例。后续的数据用于绘制折线。
当titles_from_data = False时,会以“系列1”…“系列n”命名图例,被引用的数据全用于绘制折线。

步骤三:设置图在工作表的位置。
通过调用方法工作表对象.add_chart(),将图添加至工作表中,并设置图在表格中的位置。
第一个参数,指明被添加至工作表的图表对象,这里是LineChart对象。
第二个参数 anchor:设置图在工作表的位置。

    # 实例化 LineChart() 类
    chart = LineChart()
    # 引用工作表的部分数据
    data = Reference(worksheet=ws, min_row=3, max_row=9, min_col=1, max_col=5)
    # 添加被引用的数据到 LineChart 对象
    chart.add_data(data, from_rows=True, titles_from_data=True)
    # 添加 LineChart 对象到工作表中,指定生成折线图的位置
    ws.add_chart(chart, "C12")

在这里插入图片描述

三、折线图信息及样式的优化

步骤一:修改类别轴的标签。
创建Reference 对象,调用方法LineChart对象.set_categories()。
方法LineChart对象.set_categories(), 可以引用表格中的数据来设置类别轴的标签。(set中文翻译:设置;categories中文翻译:类别)
该方法的使用很简单:LineChart对象.set_categories(Reference对象), Reference对象指明所要引用的数据。

步骤二:添加X轴、Y轴的标题。
修改LineChart对象的属性x_axis.title、y_axis.title的值。
设置属性LineChart对象.x_axis.title、LineChart对象.y_axis.title的值,可以为折线图添加X轴、Y轴的标题。(x_axis、y_axis中文翻译:x轴、y轴;title中文翻译:标题)

步骤三:修改图的样式。
修改属性LineChart对象.style的值。
设置LineChart对象.style的值,可以调整折线图的样式(折线图背景颜色、折线图线条颜色)。LineChart对象.style的值可以设置为1到48的整数(包括1和48)。

    # 引用工作表的表头数据
    cats = Reference(worksheet=ws, min_row=2, max_row=2, min_col=2, max_col=5)
    # 设置类别轴的标签
    chart.set_categories(cats)
    # 设置 x 轴的标题
    chart.x_axis.title = "季度"
    # 设置 y 轴的标题
    chart.y_axis.title = "利润"
    # 改变折线图的样式,范围在 1~48
    chart.style = 48

在这里插入图片描述

四、保存Excel文件

wb.save(file_path)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值