python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python Excel批量处理

Python编写一个Excel批量处理的桌面实用脚本

作者:程序员爱钓鱼

在办公自动化的需求越来越多的今天,用 Python 做一个属于自己的“批处理小工具”,能轻松帮你节省大量重复劳动,下面我们就来看看如何使用Python编写一个Excel批量处理的桌面实用脚本吧

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

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

一 项目目标

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

二 用到的主要库

我们会用到这些工具:

import os
import pandas as pd
from openpyxl import load_workbook

pandas 是核心,openpyxl 用来辅助处理高阶操作。

三 项目结构设计

建议你用一个简单的目录结构:

excel_batch_tool/
│── main.py                # 主脚本
│── processors.py          # 放各种处理方法
│── input/                 # 输入文件夹
│── output/                # 输出结果

真实项目里模块拆分非常重要,这样未来扩展功能就超级轻松。

四 核心功能:批量遍历 Excel 文件

main.py

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

示例:删除空行、转换列名、增加新字段

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 中的“产品名称”列里的 “旧名” 换成 “新名”:

def process_excel(df):
    if "产品名称" in df.columns:
        df["产品名称"] = df["产品名称"].replace("旧名", "新名")
    return df

七 实战示例:批量合并所有 Excel

你甚至可以把所有文件内容合并成一个:

def process_excel(df):
    return df  # 不做处理,原样返回

然后 main.py 改成:

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

def process_excel(df):
    for name, group in df.groupby("分类"):
        group.to_excel(f"output/{name}.xlsx", index=False)
    return None

main.py 中只需要根据是否返回 df 来决定是否写入。

九 小结

通过这个项目,你可以掌握——

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

完全能实现商业价值。

到此这篇关于Python编写一个Excel批量处理的桌面实用脚本的文章就介绍到这了,更多相关Python Excel批量处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文