在办公自动化的需求越来越多的今天,用 Python 做一个属于自己的"批处理小工具",能轻松帮你节省大量重复劳动。例如:
- 批量合并 Excel
- 批量替换内容
- 批量拆分数据
- 批量加水印
- 批量生成报告
- 批量转换格式(CSV ↔ Excel)
这一节我们做一个通用型批量处理脚本,让你初步掌握真实项目如何落地。
一 项目目标
构建一个 Python 桌面脚本,实现以下功能:
- 读取某个文件夹下所有 Excel 文件(xls/xlsx)
- 对每个文件进行处理(你可以按业务需求定制)
- 将处理后的结果输出到一个新文件夹
- 有良好的结构:可扩展、可维护、可复用
二 用到的主要库
我们会用到这些工具:
python
import os
import pandas as pd
from openpyxl import load_workbook
pandas 是核心,openpyxl 用来辅助处理高阶操作。
三 项目结构设计
建议你用一个简单的目录结构:
python
excel_batch_tool/
│── main.py # 主脚本
│── processors.py # 放各种处理方法
│── input/ # 输入文件夹
│── output/ # 输出结果
真实项目里模块拆分非常重要,这样未来扩展功能就超级轻松。
四 核心功能:批量遍历 Excel 文件
python
import os
import pandas as pd
from processors import process_excel
INPUT_DIR = "input"
OUTPUT_DIR = "output"
def ensure_output_folder():
if not os.path.exists(OUTPUT_DIR):
os.makedirs(OUTPUT_DIR)
def main():
ensure_output_folder()
for filename in os.listdir(INPUT_DIR):
if filename.endswith((".xlsx", ".xls")):
path = os.path.join(INPUT_DIR, filename)
print(f"正在处理: {filename}")
df = pd.read_excel(path)
# 调用自定义处理逻辑
df = process_excel(df)
# 输出结果
output_path = os.path.join(OUTPUT_DIR, filename)
df.to_excel(output_path, index=False)
print(f"已保存到: {output_path}")
if __name__ == "__main__":
main()
这个模板你可以反复复用,只改 processors.py 就能扩展新功能。
五 定制处理逻辑:processors.py
示例:删除空行、转换列名、增加新字段
python
def process_excel(df):
# 1 删除全空行
df = df.dropna(how="all")
# 2 统一列名格式
df.columns = [str(c).strip() for c in df.columns]
# 3 添加一个时间戳列
import datetime
df["处理时间"] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
return df
你未来可以替换为------
- 批量替换值
- 批量加公式
- 批量合并多表
- 批量拆分多文件
- 按条件筛选后导出
- 统计分析并生成结果
完全随你怎么扩展。
六 实战示例:批量替换某一列内容
例如你要把所有 Excel 中的"产品名称"列里的 "旧名" 换成 "新名":
python
def process_excel(df):
if "产品名称" in df.columns:
df["产品名称"] = df["产品名称"].replace("旧名", "新名")
return df
七 实战示例:批量合并所有 Excel
你甚至可以把所有文件内容合并成一个:
python
def process_excel(df):
return df # 不做处理,原样返回
然后 main.py 改成:
python
all_data = []
for filename in os.listdir(INPUT_DIR):
if filename.endswith((".xls", ".xlsx")):
df = pd.read_excel(os.path.join(INPUT_DIR, filename))
df["来源文件"] = filename
all_data.append(df)
final_df = pd.concat(all_data, ignore_index=True)
final_df.to_excel("output/合并结果.xlsx", index=False)
这就是一个可商用级别的"多文件合并工具"。
八 实战示例:批量拆分
根据某个字段拆成多个 Excel 文件:
python
def process_excel(df):
for name, group in df.groupby("分类"):
group.to_excel(f"output/{name}.xlsx", index=False)
return None
main.py 中只需要根据是否返回 df 来决定是否写入。
九 小结
通过这个项目,你可以掌握------
- pandas + openpyxl 的灵活使用
- 批处理脚本如何组织结构
- 函数与模块化的实战应用
- 真实办公自动化的落地方法
- 如何把 Python 工具发展成可售卖的小产品(你本来就在做!)
这套脚本只要你不断扩展,就能变成:
- 合并工具
- 拆分工具
- 替换工具
- 字段提取工具
- 水印工具
- 批量格式转换工具
完全能实现商业价值。