在工作中遇到,多个excel文件,每个文件均包含不等数量的sheet,同名sheet内的表格结构相同,如:
excel-01:包含202101、202102、202103,三个sheet
excel-02:包含202101、 202103、202104,三个sheet
excel-03:包含 202102 ,一个sheet
等等
目标:将多个excel文件中的所有sheet合并在同一excel文件中,并将同名sheet进行合并
因为完全没有任何相关知识,只能在网站查询成熟方法,找到方法如下,但excel文件中如果存在单个名称的sheet就会报错,请问如何处理?
import os
import pandas as pd
# 列出 D:\1\1\1 下所有文件名
file_name_li = os.listdir(r"D:\1\1\1")
# 定义文件名集合
all_file_name = set()
# 定义数据列表
all_data_li = []
# 遍历出每个文件名
for file_name in file_name_li:
# 将文件夹绝对路径 与 文件名进行拼接
file_path_li = os.path.join(r"D:\1\1\1", file_name)
# 读取 excel 表格数据
all_data = pd.read_excel(file_path_li, sheet_name=None)
# 将数据添加到数据列表中
all_data_li.append(all_data)
# 将工作表名添加到文件名集合中
for name in all_data:
all_file_name.add(name)
# 创建工作簿
writer = pd.ExcelWriter("all_data.xlsx")
# 遍历每个工作表名
for sheet_name in all_file_name:
data_li = []
# 遍历数据
for data in all_data_li:
# 获取同名数据并添加到data_li中
n_rows = data_li.append(data[sheet_name])
# 将同名数据进行拼接
group_data = pd.concat(data_li)
# 保存到writer工作簿中,并指定工作表名为sheet_name
group_data.to_excel(writer, sheet_name=sheet_name)
# 保存工作簿
writer.save()