|
2威望
在工作中遇到,多个excel文件,每个文件均包含不等数量的sheet,同名sheet内的表格结构相同,如:
excel-01:包含202101、202102、202103,三个sheet
excel-02:包含202101、202103、202104,三个sheet
excel-03:包含202102 ,一个sheet
等等
目标:将多个excel文件中的所有sheet合并在同一excel文件的多个sheet中,并将同名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()
复制代码
|
|