用 Python 实现自动化处理 Excel 文件,完成数据清洗、分析与图表可视化,从此告别手工复制粘贴的低效时代!
在现代办公中,数据处理已是日常,但手动处理大量 Excel 文件,不仅效率低,还易出错。
选择 Python 的原因:
本项目将演示以下流程:
bash复制编辑pip install openpyxl pandas matplotlib
sales_data.xlsx
字段包括:
日期 | 区域 | 销售员 | 产品 | 销量 | 单价 |
---|---|---|---|---|---|
2025-06-01 | 华东 | 张三 | A类 | 100 | 20 |
2025-06-01 | 华北 | 李四 | B类 | 120 | 18 |
使用 pandas
读取表格内容:
python复制编辑import pandas as pd
df = pd.read_excel("sales_data.xlsx")
print(df.head())
示例输出:
css复制编辑 日期 区域 销售员 产品 销量 单价
0 2025-06-01 华东 张三 A类 100 20
1 2025-06-01 华北 李四 B类 120 18
python复制编辑df["销售额"] = df["销量"] * df["单价"]
python复制编辑area_summary = df.groupby("区域")["销售额"].sum().reset_index()
print(area_summary)
示例结果:
区域 | 销售额 |
---|---|
华东 | 5400 |
华北 | 4500 |
python复制编辑product_summary = df.groupby("产品")["销量"].sum().sort_values(ascending=False)
python复制编辑import matplotlib.pyplot as plt
plt.figure(figsize=(8, 6))
product_summary.plot(kind="bar", color="skyblue")
plt.title("各产品销量统计")
plt.xlabel("产品")
plt.ylabel("销量")
plt.tight_layout()
plt.savefig("product_sales.png")
plt.show()
📷 效果图如下:
如果你的数据中日期较多,可绘制销售额随时间的变化:
python复制编辑daily_sales = df.groupby("日期")["销售额"].sum()
plt.figure(figsize=(10, 5))
daily_sales.plot(kind="line", marker="o")
plt.title("每日销售额变化")
plt.ylabel("销售额")
plt.grid(True)
plt.tight_layout()
plt.savefig("daily_sales.png")
使用 openpyxl
插入图表图片:
python复制编辑from openpyxl import Workbook
from openpyxl.drawing.image import Image
wb = Workbook()
ws = wb.active
ws.title = "销售图表报告"
# 插入图片
img = Image("product_sales.png")
ws.add_image(img, "A1")
img2 = Image("daily_sales.png")
ws.add_image(img2, "A20")
wb.save("sales_report.xlsx")
若你有多个文件(如每月一个表格),可批处理:
python复制编辑import glob
all_data = pd.DataFrame()
for file in glob.glob("data/month_*.xlsx"):
df = pd.read_excel(file)
df["销售额"] = df["销量"] * df["单价"]
all_data = pd.concat([all_data, df], ignore_index=True)
print("合并后数据量:", all_data.shape)
办公自动化也可配合邮件通知,自动发送报告:
python复制编辑import smtplib
from email.message import EmailMessage
msg = EmailMessage()
msg["Subject"] = "月度销售报告"
msg["From"] = "me@example.com"
msg["To"] = "boss@example.com"
msg.set_content("您好,附件为本月销售报告,请查收。")
with open("sales_report.xlsx", "rb") as f:
msg.add_attachment(f.read(), maintype="application", subtype="vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename="sales_report.xlsx")
with smtplib.SMTP_SSL("smtp.example.com", 465) as smtp:
smtp.login("me@example.com", "password")
smtp.send_message(msg)
css复制编辑📂excel_auto_report
├── sales_data.xlsx
├── sales_report.xlsx
├── product_sales.png
├── daily_sales.png
├── main.py
└── readme.md
本项目实战涵盖了:
📌 拓展方向:
拓展项 | 工具或建议 |
---|---|
GUI 自动化工具 | PyQt, Tkinter |
自动上传云端 | 接入 OneDrive/阿里云 SDK |
支持 xls 格式 | xlrd, xlwt |
Web 页面展示图表 | Flask + echarts |
微信机器人推送报告 | 企业微信 API |
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。