Python笔记:按不同表名称合并汇总同名工作表到同一个工作簿中

房东的猫 提交于 2020-08-11 18:30:27

        虽然用VBA也可以实现“将多个/不同Excel工作簿中的/多个表格/按不同工作表名称/汇总合并在同一个Excel工作簿中 ”,但是如果数据量过大,VBA用起来就会卡。因为Python可以处理的数据量比较大都不会卡,所以我就喜欢用Python来操作。

示例一:

        在 C:\Users\QDM\Desktop\Python 路径下有3个工作簿,它们的数据结构相同,且都位于 Sheet1中。如以下截图所示:

        然后,通过以下这段Python代码,可以实现如下效果:

# 导库
import pandas as pd
import os

# 将待合并的文件都放到同一个文件夹内,文件夹和路径尽量避免包含中文字符
os.chdir(r"C:\Users\QDM\Desktop\Python")

# 将要汇总的工作表名称写入列表中
sheetname = ["Sheet1"]

with pd.ExcelWriter(r"C:\Users\QDM\Desktop\Python\汇总.xlsx") as writer:
    for sheet in sheetname:
        df = pd.concat([pd.read_excel(file,sheet_name = sheet) for file in os.listdir() if file.endswith(".xlsx")])
        df.to_excel(writer,sheet_name = sheet)

 

示例二:

        在 C:\Users\QDM\Desktop\Python\new 路径下,有3个工作簿,每个工作簿中包含不止一张工作表,现在要精确地按照它们的sheet_name来分类合并汇总到同一个工作簿,以原有sheet_name来命名的不同工作表中。

 

        可通过这段示例代码来实现:

# 导库
import pandas as pd
import os

# 将待合并的文件都放到同一个文件夹内,文件夹和路径尽量避免包含中文字符
os.chdir(r"C:\Users\QDM\Desktop\Python\new")

# 将要汇总的工作表名称写入列表中
sheetname = ["Sheet1","Sheet2"]

with pd.ExcelWriter(r"C:\Users\QDM\Desktop\Python\new\汇总.xlsx") as writer:
    for sheet in sheetname:
        df = pd.concat([pd.read_excel(file,sheet_name = sheet) for file in os.listdir() if file.endswith(".xlsx")])
        df.to_excel(writer,sheet_name = sheet)

效果如下:

 

        温馨提示:在修改运行上述代码前,请记得关闭待合并的所有工作簿,否则会报错,合并出来的新工作簿里面也会是一片空白!

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!