哲人言:道生一,一生二,二生三,三生万物。------《道德经》
创作者:查老师并不渣(CSDN)(一个在哲学与生活中寻找平衡的思考者 😊)目录
[三、Excel 自动化:让报表从 3 小时变 20 分钟](#三、Excel 自动化:让报表从 3 小时变 20 分钟)
[场景 1:合并多个 Excel 文件](#场景 1:合并多个 Excel 文件)
[场景 2:按条件筛选并生成新表](#场景 2:按条件筛选并生成新表)
日常工作中,你是不是也遇到过这些情况:
- 每周一花 2 小时整理 Excel 报表,机械地复制粘贴、拉公式
- 需要批量重命名几百个文件,对着鼠标发呆
- 每天登录后台下载同一份数据,重复同样操作
- 领导要你对比几个表格的差异,眼都快看花了
这些问题有一个共同的解法:写一个 Python 脚本,让电脑替你干。
这篇文章不讲虚的,直接给代码和思路。你不需要是程序员,能复制粘贴就能用。
一、LScript是什么?
平台介绍 - LScript从零基础到商业变现,7000+学员选择的AI自动化学习平台:系统课程、实战项目、脚本库与社群陪伴。
https://www.lscript.cn/intro
LScript 是一个聚焦 AI自动化 + Python脚本 的实战学习平台。
和你在 B 站刷到的零散教程不同,LScript 做的事是:
把「学会」和「赚到」打通。
二、从自动发邮件开始
邮件群发是职场最常用的自动化场景。假设你需要给客户列表发送带附件的营销邮件,手动发 50 封可能要一下午,用 Python 只需要 2 秒钟。
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
# 配置信息
SMTP_HOST = "smtp.qq.com" # 你的邮箱 SMTP 服务器
SMTP_PORT = 587 # 端口号
SENDER = "your@qq.com" # 你的邮箱
PASSWORD = "your_auth_code" # SMTP 授权码,不是登录密码
def send_email(recipient, subject, body, attachment_path=None):
"""发送单封邮件"""
msg = MIMEMultipart()
msg["From"] = SENDER
msg["To"] = recipient
msg["Subject"] = subject
msg.attach(MIMEText(body, "plain", "utf-8"))
# 如果有附件,添加附件
if attachment_path:
with open(attachment_path, "rb") as f:
part = MIMEBase("application", "octet-stream")
part.set_payload(f.read())
encoders.encode_base64(part)
part.add_header(
"Content-Disposition",
f"attachment; filename={attachment_path.split('/')[-1]}"
)
msg.attach(part)
# 发送
server = smtplib.SMTP(SMTP_HOST, SMTP_PORT)
server.starttls()
server.login(SENDER, PASSWORD)
server.sendmail(SENDER, recipient, msg.as_string())
server.quit()
print(f"✓ 已发送至: {recipient}")
# 批量发送
recipients = ["client1@email.com", "client2@email.com", "client3@email.com"]
for r in recipients:
send_email(r, "自动化营销邮件", "您好!这是一封自动发送的邮件...")
print(f"✅ 完成!共发送 {len(recipients)} 封邮件")
使用步骤:
- 将代码中的 SMTP 配置改为你自己的邮箱信息
- QQ 邮箱需要在设置里开启 SMTP 服务并获取授权码
- 把
recipients列表换成真实的收件人地址 - 运行脚本,搞定
三、Excel 自动化:让报表从 3 小时变 20 分钟
这是职场上最实用的自动化方向。用 pandas 和 openpyxl 两个库,几乎可以处理所有的 Excel 操作。
场景 1:合并多个 Excel 文件
import pandas as pd
import os
from glob import glob
# 获取所有 Excel 文件
folder_path = "./报表/" # 改成你的路径
files = glob(os.path.join(folder_path, "*.xlsx"))
if not files:
print("没有找到 Excel 文件")
exit()
# 逐个读取并合并
all_data = []
for f in files:
df = pd.read_excel(f)
all_data.append(df)
print(f"已读取: {f}")
# 合并为一个 DataFrame
result = pd.concat(all_data, ignore_index=True)
# 输出到新文件
output_path = "./合并报表.xlsx"
result.to_excel(output_path, index=False)
print(f"✅ 合并完成!共 {len(result)} 行数据")
场景 2:按条件筛选并生成新表
import pandas as pd
df = pd.read_excel("销售数据.xlsx")
# 筛选:销售额大于 10000 的记录
high_sales = df[df["销售额"] > 10000]
# 按区域汇总销售额
summary = df.groupby("区域")["销售额"].sum().reset_index()
# 输出
with pd.ExcelWriter("分析结果.xlsx") as writer:
high_sales.to_excel(writer, sheet_name="高销售额", index=False)
summary.to_excel(writer, sheet_name="区域汇总", index=False)
print(f"✅ 高销售额记录: {len(high_sales)} 条")
print(summary)
容易踩的坑:
| 场景 | 推荐库 | 原因 |
|---|---|---|
| 读取 .xlsx | openpyxl |
原生支持 xlsx 格式 |
| 读取 .xls | xlrd |
兼容老格式 |
| 大量数据处理 | pandas |
速度快、功能全 |
| 写复杂格式 | openpyxl |
支持样式、图表 |
四、批量文件处理:解放重复劳动
批量重命名文件
import os
folder = "./待处理文件/"
prefix = "项目文档_"
for i, filename in enumerate(os.listdir(folder), 1):
old_path = os.path.join(folder, filename)
# 跳过文件夹
if os.path.isfile(old_path):
ext = os.path.splitext(filename)[1]
new_name = f"{prefix}{i:03d}{ext}"
new_path = os.path.join(folder, new_name)
os.rename(old_path, new_path)
print(f"✓ {filename} → {new_name}")
print("✅ 全部重命名完成")
批量转换图片格式
from PIL import Image
import os
from glob import glob
input_folder = "./图片/"
output_folder = "./输出/"
# 确保输出目录存在
os.makedirs(output_folder, exist_ok=True)
# 处理所有 jpg 图片
for img_path in glob(os.path.join(input_folder, "*.jpg")):
img = Image.open(img_path)
filename = os.path.basename(img_path)
name = os.path.splitext(filename)[0]
# 转为 PNG
output_path = os.path.join(output_folder, f"{name}.png")
img.save(output_path, "PNG")
print(f"✓ 已转换: {filename}")
print("✅ 图片转换完成")
压缩文件夹中的图片
from PIL import Image
import os
from glob import glob
def compress_images(folder, quality=60, max_size=(1920, 1080)):
"""批量压缩图片"""
for img_path in glob(os.path.join(folder, "*.jpg")) + \
glob(os.path.join(folder, "*.png")):
img = Image.open(img_path)
# 限制最大尺寸
img.thumbnail(max_size, Image.Resampling.LANCZOS)
# 按质量压缩保存
filename = os.path.basename(img_path)
img.save(img_path, optimize=True, quality=quality)
old_size = os.path.getsize(img_path) / 1024
print(f"✓ 已压缩: {filename} ({old_size:.1f} KB)")
compress_images("./待压缩/")
五、自动化思维:怎么发现身边的自动化机会
写代码本身不难,难的是发现什么事可以用自动化解决。
一个简单判断标准:任何每隔一段时间就要重复做的事情,都可以考虑自动化。
| 判断标准 | 适合自动化 | 不适合自动化 |
|---|---|---|
| 重复频率 | 每周至少一次 | 半年一次 |
| 操作步骤 | 3 步以上 | 1-2 步 |
| 判断逻辑 | 固定的规则(if A 则 B) | 需要大量主观判断 |
| 数据量 | 10 条以上 | 三五条 |
| 出错成本 | 低,错了可以重跑 | 极高,不允许出错 |
一些常见的自动化切入点:
- 本周最讨厌做的重复操作是什么? → 这就是第一个需要自动化的场景
- 同事最常抱怨的繁琐操作是什么? → 这可能是接单的机会
- 每次做都小心翼翼的步骤是什么? → 越容易出错的越适合交给机器
六、一个完整的自动化示例:日报自动生成
把上面几个知识点串起来,做一个完整的案例:
import pandas as pd
from datetime import datetime, timedelta
import smtplib
from email.mime.text import MIMEText
# ---------- 1. 读取数据 ----------
df = pd.read_excel("今日销售数据.xlsx")
# ---------- 2. 分析数据 ----------
summary = df.groupby("产品线").agg({
"销售额": "sum",
"订单数": "count",
"客户数": "nunique"
}).reset_index()
# 计算核心指标
total_sales = summary["销售额"].sum()
total_orders = summary["订单数"].sum()
avg_order = round(total_sales / total_orders, 2) if total_orders > 0 else 0
# 找出最佳产品线
best_product = summary.loc[summary["销售额"].idxmax(), "产品线"]
# ---------- 3. 生成报告文本 ----------
today = datetime.now().strftime("%Y-%m-%d")
report = f"""
【{today} 销售日报】
总销售额:¥{total_sales:,.2f}
总订单数:{total_orders}
客单价:¥{avg_order}
最佳产品线:{best_product}
详细数据:
{summary.to_string(index=False)}
"""
# ---------- 4. 自动发送 ----------
def send_daily_report(report_text):
server = smtplib.SMTP("smtp.qq.com", 587)
server.starttls()
server.login("your@qq.com", "your_auth_code")
msg = MIMEText(report_text, "plain", "utf-8")
msg["Subject"] = f"销售日报 - {today}"
msg["From"] = "your@qq.com"
msg["To"] = "manager@company.com"
server.sendmail("your@qq.com", "manager@company.com", msg.as_string())
server.quit()
print(f"✅ 日报已发送")
send_daily_report(report)
如果再配合操作系统的定时任务(Windows 的任务计划程序或 Linux 的 cron),这个脚本可以做到:
每天早上 9 点自动拉数据 → 分析 → 生成日报 → 发送到领导邮箱。
你只需要写好一次脚本,之后就不用管了。
写在最后
Python 自动化入门其实就三步:
- 找到一个你觉得烦的重复操作(这是最大的动力)
- 写脚本解决它(复制粘贴上面的代码,改参数就行)
- 让它自动跑(配个定时任务,一劳永逸)
不需要一上来就啃完一本 Python 教材。先从解决一个小问题开始,比如今天就把那个每周让你头疼的 Excel 报表自动化掉。
一个脚本省下来的时间,可能比你学 Python 花的时间还多。
如果你有具体的自动化需求,可以在评论区留言场景,我会挑典型的写代码示例回复。