“以前做报表:打开Excel,人傻了;现在做报表:双击脚本,鱼摸了。”
大家好,我是你们那位“能用自动化解决的事,绝不让自己动手”的博主。
今天是我们30天自救计划的第二十二天,第四周 “实战演练·成为办公室魔法师”的第一天。
过去三周,我们零零散散学了好多技能:Excel公式、宏、Python数据处理、爬虫、AI分析、自动发邮件……就像攒了一堆乐高积木。
今天,我们要用这些积木搭一座城堡——一个完整的销售报表自动化流水线。
以前的我:报表做到深夜 以前的我:报表做到深夜
从原始数据下载,到清洗、分析、画图、生成报告,再到邮件发送,全部一键完成。每天帮你省下2小时,用来摸鱼、学习、谈恋爱,随你便。
假设你是某公司的销售运营专员。每天早上9点,你都要做同一件事:
这套流程,快则1小时,慢则2小时。关键是每天都要做!
一个月下来,你花了40个小时在这件事上。一年就是480小时——相当于20天年假!
以前的你:认命了,觉得这就是工作的一部分。
现在的你:“不行,我要把这20天年假抢回来!”
我们要打造的自动化流水线包括以下几个环节:
全部整合到一个Python脚本里,每天双击运行,然后喝咖啡等邮件。
打开ChatGPT,输入以下指令(复制粘贴时记得替换你的信息):
“我是一个Python初学者。我想写一个脚本,实现销售报表自动化。具体要求如下:
数据源:有一个文件夹叫‘每日销售数据’,里面每天会放一个CSV文件,文件名包含日期,比如‘sales_20260223.csv’。文件里有这些列:日期、省份、产品类别、销售额。
数据清洗:删除销售额为空的行;日期统一格式为YYYY-MM-DD;省份列去除前后空格。
分析任务:
按省份汇总销售额,排序,保存到Excel的‘省份排名’工作表。
按产品类别汇总销售额,排序,保存到‘产品排名’工作表。
生成两张图表:省份销售额柱状图、每日销售额折线图,保存为图片。
自动写结论(可选):调用AI API,根据今天的汇总数据生成一段分析文字,写入Excel的‘分析结论’工作表。
发送邮件:把生成的Excel文件和两张图表作为附件,发送给老板(邮箱地址:boss@company.com)。
请帮我写出完整的Python代码,每行加注释,并告诉我需要安装哪些库,怎么运行。”
AI会给你一个很长的脚本(可能上百行),但别怕,大部分是注释。我们把它拆开来看核心部分。
现在的我:双击脚本,喝咖啡
python
import os
import glob
import pandas as pd
# 找到最新的销售数据文件
data_folder = '每日销售数据'
files = glob.glob(os.path.join(data_folder, 'sales_*.csv'))
latest_file = max(files) # 按文件名排序,取最新的
df = pd.read_csv(latest_file)python
# 删除销售额为空的行
df = df.dropna(subset=['销售额'])
# 日期统一格式(假设原格式是20260223这种)
df['日期'] = pd.to_datetime(df['日期'], format='%Y%m%d').dt.strftime('%Y-%m-%d')
# 省份去除空格
df['省份'] = df['省份'].str.strip()python
# 按省份汇总
province_sum = df.groupby('省份')['销售额'].sum().reset_index()
province_sum = province_sum.sort_values('销售额', ascending=False)
# 按产品类别汇总
product_sum = df.groupby('产品类别')['销售额'].sum().reset_index()
product_sum = product_sum.sort_values('销售额', ascending=False)
# 保存到Excel的不同工作表
with pd.ExcelWriter('销售报表_今日.xlsx', engine='openpyxl') as writer:
province_sum.to_excel(writer, sheet_name='省份排名', index=False)
product_sum.to_excel(writer, sheet_name='产品排名', index=False)python
import matplotlib.pyplot as plt
# 省份柱状图
plt.figure(figsize=(10,6))
plt.bar(province_sum['省份'], province_sum['销售额'])
plt.title('各省份销售额排名')
plt.xlabel('省份')
plt.ylabel('销售额')
plt.xticks(rotation=45)
plt.tight_layout()
plt.savefig('省份排名图.png')
# 每日趋势折线图
daily = df.groupby('日期')['销售额'].sum().reset_index()
plt.figure(figsize=(10,6))
plt.plot(daily['日期'], daily['销售额'], marker='o')
plt.title('每日销售额趋势')
plt.xlabel('日期')
plt.ylabel('销售额')
plt.xticks(rotation=45)
plt.tight_layout()
plt.savefig('每日趋势图.png')python
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
def send_email(附件列表):
# ... 复用之前的发邮件代码 ...如果你有OpenAI API key,可以加上这段(参考Day 17):
python
import openai
prompt = f"今天销售数据:省份TOP3是{province_sum.head(3).to_string()},产品TOP3是{product_sum.head(3).to_string()}。请写一段简短的销售分析结论,50字以内。"
response = openai.ChatCompletion.create(...)
结论 = response.choices[0].message.content
# 把结论写入Excel
自动化流水线工厂
整个过程耗时不到2分钟,其中1分50秒是等待AI响应(如果有的话)。
准点下班,同事羡慕的眼神
作业题目:
照着今天的思路,尝试自动化你手头的一个重复性报表工作。
操作步骤:
挑战版:
完整实现“数据读取→分析→图表→邮件发送”全流程,并截图邮件发送成功界面。
“每天省下2小时,一年攒出20天假——自动化是最好的年假充值方式。”
今天你见识了什么是“报表自动化流水线”。这不再是某个单一技能,而是把你之前学的一切组合起来,解决真实工作问题。
以后,每天早晨你不再是被Excel绑架的“表哥/表姐”,而是指挥机器干活的“指挥官”。看着脚本自动运行、邮件自动发送,你喝着咖啡,心里暗爽:“这鱼,摸得真香。”
明天Day 23,我们继续实战:《财务对账不再怕:用Python找出那1分钱的差额》。专门解决财务人员最头疼的对账问题——两边差1分钱,查半天找不到。
评论区交给你:
你每天最头疼的重复性工作是什么?说出来,我们一起想办法自动化!
点击关注,每天学一招,让自动化替你打工!
#Python教学 #报表自动化 #办公自动化 #告别加班 #准点下班
P.S. 今天的作业如果成功了,你可能会发现,原来每天2小时的工作,其实只需要2分钟。剩下的118分钟,你可以光明正大地……学习新技能!