当前位置:首页>python>Python 如何:汇总多 Excel 多 Sheet

Python 如何:汇总多 Excel 多 Sheet

  • 2026-09-19 21:19:44
Python 如何:汇总多 Excel 多 Sheet

Python 如何:汇总多 Excel 多 Sheet

一个 Excel 里不止一个 Sheet,100 个 Excel 加起来几百个 Sheet 怎么汇总?
关键就在 pd.read_excel(..., sheet_name=None)——一次性读出所有 Sheet。

一、读出多 Sheet

import pandas as pd

# sheet_name=None → 返回 {sheet名: DataFrame}
sheets = pd.read_excel("报表.xlsx", sheet_name=None)
for name, df in sheets.items():
print(name, df.shape)

二、方式一:全部纵向合并成一张大表

适合所有 Sheet 结构相同(比如每月一张 Sheet,列一样)。

import glob, pandas as pd

frames = []
for f in glob.glob("data/*.xlsx"):
for sname, df in pd.read_excel(f, sheet_name=None).items():
        df["来源文件"] = f.split("\\")[-1]
        df["来源Sheet"] = sname
        frames.append(df)

pd.concat(frames, ignore_index=True).to_excel("汇总.xlsx", index=False)

加两列标记来源,出问题能溯源。

三、方式二:每个 Sheet 单独成 Sheet 写进总表

适合结构不同、想原样保留各自内容。

with pd.ExcelWriter("总表.xlsx") as w:
for f in glob.glob("data/*.xlsx"):
        base = f.split("\\")[-1][:20]
for sname, df in pd.read_excel(f, sheet_name=None).items():
            df.to_excel(w, sheet_name=f"{base}_{sname}"[:31], index=False)

注意:Excel 的 sheet 名最长 31 个字符,超长会被截断,拼接时记得截断。

四、常见坑

  • • Sheet 名重复:多个文件都有 Sheet1,写总表会覆盖,需在名字里拼上文件名。
  • • 结构不同却强行 concat:列会错位,先确认要不要合并成一表。
  • • 引擎:写多 sheet 用 openpyxl(默认),读 .xls 才用 xlrd。
  • • 大文件:逐 Sheet 读再写,注意内存。

五、配套工具怎么用

打开 main.py:

  1. 1. 选文件夹(含多个多 Sheet 的 Excel)。
  2. 2. 选模式:A 合并成单表 / B 每个 Sheet 独立成 Sheet。
  3. 3. 预览文件与 Sheet 数量。
  4. 4. 导出,自动标注来源文件与来源 Sheet。

几百个 Sheet,几分钟理顺。

最新文章

随机文章