100张Excel图表,以前做4小时,现在2分钟(附代码)
还在手动一张张做图表?复制粘贴到手软?今天教你用Python一键生成100张图表,喝杯咖啡的时间就搞定
📌 上篇AI概念的文章很受大家欢迎,感谢大家的支持。今天回归Python办公自动化,来点实打实的干货。 一个真实崩溃的瞬间—— 上周一个做财务的朋友找我哭诉:
“每个月要出50家门店的销售图表,打开Excel → 选数据 → 插图表 → 调颜色 → 改标题 → 保存…一张图5分钟,光做图就要4个多小时,每个月都来一遍,我要疯了。”
我给了她一段代码。50张图表,2分钟跑完。
今天就把这段代码分享给你。
步骤1:环境准备
1.安装好python3.*
2.安装库(在cmd命令行窗口输入如下命令按回车键): pip install pandas matplotlib openpyxl
数据:下面是我的业务数据(有100个门店的销售数据):

每个Excel长这个样子(结构完全相同):

目标:一键生成所有门店的图表。
步骤2:新建batch_charts.py文件,编写python脚本
下面是完整代码(复制就能用)
import pandas as pd
import matplotlib.pyplot as plt
import os
设置中文显示
plt.rcParams[‘font.sans-serif’] = [‘SimHei’] plt.rcParams[‘axes.unicode_minus’] = False
文件夹路径
folder_path = ‘门店数据’ output_folder = ‘门店图表’
创建输出文件夹
os.makedirs(output_folder, exist_ok=True)
遍历所有Excel文件
for file in os.listdir(folder_path):
if file.endswith('.xlsx'): # 读取数据 df = pd.read_excel(os.path.join(folder_path, file)) # 生成图表 plt.figure(figsize=(10, 6)) plt.plot(df['月份'], df['销售额(万)'], marker='o', label='销售额') plt.plot(df['月份'], df['利润(万)'], marker='s', label='利润') # 标题用门店名 shop_name = file.replace('.xlsx', '') plt.title(f'{shop_name} 销售趋势', fontsize=16) plt.xlabel('月份') plt.ylabel('金额(万)') plt.legend() plt.grid(True, linestyle='--', alpha=0.7) # 保存图表 plt.savefig(f'{output_folder}/{shop_name}_图表.png', dpi=300, bbox_inches='tight') plt.close()
print(f’✅ 完成!共生成 {len(os.listdir(output_folder))} 张图表’)
步骤3:运行脚本
在命令行输入:python batch_charts.py即可运行脚本。
运行效果:2分钟后,门店图表 文件夹里多了100张图片。如下图:

进阶操作:把图表插回Excel(把下列代码复制到batch_charts.py中上面代码的后面即可。)
from openpyxl import load_workbook from openpyxl.drawing.image import Image
for file in os.listdir(folder_path):
if file.endswith(‘.xlsx’):
file_path = os.path.join(folder_path, file)
shop_name = file.replace(‘.xlsx’, ”)
# 把图片插入到Excel(放在E2单元格) wb = load_workbook(file_path) ws = wb.active img = Image(f'{output_folder}/{shop_name}_图表.png') img.width, img.height = 400, 300 ws.add_image(img, 'E2') wb.save(file_path)
print(‘✅ 所有图表已插入原文件’)
接下来,重新运行python_charts.py文件。
打开每个门店的Excel,图表就在里面了。如下图:

还能怎么玩?
改一行代码就能实现下面的需求:
改成柱状图:plt.plot 换成 plt.bar ,同时把参数marker去掉,代码改成如下图:

如果觉得上面的柱状图不好看,想改成并排的柱状图,需要将plt.plot几行代码改为如下几行;

柱状图如下:

改成饼图:用 plt.pie,适合看占比
100个门店 → 1000个:代码不用改,照样跑 每周自动更新
注意: 把 batch_charts.py文件放在和 门店数据文件夹同级的位置。
原来4小时的工作,现在2分钟。
夜雨聆风