从这里开始,项目会明显“变重”:更多边界处理、更完整的参数、更接近能直接交付给同事使用的程度——对得起你的订阅。
🎯 本篇成品:一条命令,把几十个同格式的Excel分表合并成一个总表,自动记录每行数据来自哪个文件。 🐼 pandas首次登场,含注释110行左右。
📌 太长不看版(给想快速上手的你)
| 项目名称 | Excel批量报表合并 |
| 代码行数 | ~110行(含注释) |
| 依赖 | pandas + openpyxl(第一次装两个包) |
| 核心功能 | 一键合并同格式Excel → 总表 + 追溯来源 |
| 跑起来的命令 | python main.py ./分表 |
| 核心知识点 | pd.read_excel → pd.concat → df.to_excel |
| 做完你能得到 | 月底2小时手工活 → 3秒自动完成 |
一、场景共鸣:月底的两小时手工活
每个月底,30个门店的销售日报躺在文件夹里,你要把它们复制粘贴进一个总表——Ctrl+C、Ctrl+V重复30次,还要小心漏掉哪个文件、粘错哪一行。
这个活每月吃掉你两小时,一年就是一天。
📌 本篇之后,它变成一条命令,耗时3秒:
$ python main.py ./分表
读取 门店01.xlsx:128行
读取 门店02.xlsx:131行
读取 门店03.xlsx:96行
…
合并完成:12 个文件,共 1503 行 → 合并总表.xlsx
二、前置知识:pandas四大件(先建立概念图)
pandas是Python数据处理的头号工具,本篇只用它最基础的四件:
| 📥 装进内存 | pd.read_excel(文件) | 读出一张“智能表格”——DataFrame |
| 📊 DataFrame | — | “带行列编号的智能表格”,pandas的一切核心 |
| 📚 纵向拼接 | pd.concat([表1, 表2]) | 把多张同结构表格上下摞起来 |
| 💾 写回磁盘 | df.to_excel(文件) | 存成Excel,index=False不写行号 |
📌 两点说明
| 为什么要装两个包 | pandas管表格逻辑,openpyxl管Excel文件格式。缺一不可 |
| 为什么用xlsx不是CSV | CSV里中文在Excel直接打开容易乱码,xlsx稳。后面爬虫存数据时你会见到CSV的主场 |
三、第0步:setup——依赖第一次“成双”
1. 新建文件夹 excel_merge,VSCode打开
2. python -m venv venv && 激活venv
3. git init + .gitignore
4. pip install pandas openpyxl # 🚀 第一次装两个包
5. pip freeze > requirements.txt
打开requirements.txt看一眼:这次不止一行了——pandas带着自己的依赖(numpy等)一起进来。
这就是之前说的“依赖会滚雪球”,也是为什么虚拟环境从第一个项目就要建。
四、第1步:找文件——先排除“假xlsx”
\”\”\”merge_excel —— 批量合并同格式Excel报表\”\”\”
import argparse
from pathlib import Path
import pandas as pd
def find_xlsx(folder: Path) –> list[Path]:
\”\”\”找出所有真正的xlsx(排除Excel打开时产生的临时锁文件)\”\”\”
files = sorted(folder.glob(\”*.xlsx\”))
return [f for f in files if not f.name.startswith(\”~$\”)]
🎯 那一行~$过滤是本篇第一个实战彩蛋:
💡 Excel开着某个文件时,会在同目录留下~$文件名.xlsx的临时锁文件——它长得像数据文件,内容却是乱码,不过滤掉就会混进合并结果(第九节②现场表演)。
网硕互联帮助中心





评论前必须登录!
注册