Python编程实战:实现一个 Excel 批量处理工具(桌面实用脚本)

在办公自动化的需求越来越多的今天,用 Python 做一个属于自己的"批处理小工具",能轻松帮你节省大量重复劳动。例如:

  • 批量合并 Excel
  • 批量替换内容
  • 批量拆分数据
  • 批量加水印
  • 批量生成报告
  • 批量转换格式(CSV ↔ Excel)

这一节我们做一个通用型批量处理脚本,让你初步掌握真实项目如何落地。


一 项目目标

构建一个 Python 桌面脚本,实现以下功能:

  1. 读取某个文件夹下所有 Excel 文件(xls/xlsx)
  2. 对每个文件进行处理(你可以按业务需求定制)
  3. 将处理后的结果输出到一个新文件夹
  4. 有良好的结构:可扩展、可维护、可复用

二 用到的主要库

我们会用到这些工具:

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 文件

main.py

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 工具发展成可售卖的小产品(你本来就在做!)

这套脚本只要你不断扩展,就能变成:

  • 合并工具
  • 拆分工具
  • 替换工具
  • 字段提取工具
  • 水印工具
  • 批量格式转换工具

完全能实现商业价值。


相关推荐
wrj的博客9 小时前
python环境安装
python·学习·环境配置
Pyeako9 小时前
深度学习--BP神经网络&梯度下降&损失函数
人工智能·python·深度学习·bp神经网络·损失函数·梯度下降·正则化惩罚
摘星编程10 小时前
OpenHarmony环境下React Native:Geolocation地理围栏
python
充值修改昵称10 小时前
数据结构基础:从二叉树到多叉树数据结构进阶
数据结构·python·算法
q_354888515312 小时前
AI大模型:python新能源汽车推荐系统 协同过滤推荐算法 Echarts可视化 Django框架 大数据毕业设计(源码+文档)✅
大数据·人工智能·python·机器学习·信息可视化·汽车·推荐算法
Yeats_Liao12 小时前
开源生态资源:昇腾社区ModelZoo与DeepSeek的最佳实践路径
python·深度学习·神经网络·架构·开源
被星1砸昏头13 小时前
掌握Python魔法方法(Magic Methods)
jvm·数据库·python
love530love13 小时前
彻底解决 ComfyUI Mixlab 插件 Whisper.available False 的报错
人工智能·windows·python·whisper·win_comfyui
不解风水14 小时前
《深度学习入门:基于 Python 的理论与实现》(斋藤康毅)
人工智能·python·深度学习
偷星星的贼1114 小时前
数据分析与科学计算
jvm·数据库·python