代码整体
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)