excel中如何批量合并 D孙能录取名册2023年名册名册数据汇总 文件夹中表头不一致的工作表格以表头最长的为基础如果有的表没有此列则新增此列。请告诉详细流程并直接修改好代码
下面是一个实现该功能的详细流程和代码示例:
- 获取指定文件夹中的所有工作表格文件路径。
- 遍历每个工作表格文件。
- 打开并读取工作表格,获取表头信息。
- 将表头信息与之前读取到的最长表头进行比较,并更新最长表头。
- 关闭当前工作表格。
- 创建一个新的工作簿,用于存储合并后的数据。
- 遍历每个工作表格文件。
- 打开并读取工作表格。
- 获取工作表格的表头信息。
- 遍历最长表头的每个列名。
- 检查当前列是否存在于工作表格的表头中。
- 如果不存在,则在工作表格的表头中新增该列。
- 将工作表格的数据拷贝到新的工作簿中。
- 关闭当前工作表格。
- 保存并关闭新的工作簿。
下面是代码示例:
import os
import pandas as pd
# 指定文件夹路径
folder_path = r'D:\孙能\录取名册\2023年名册\名册数据\汇总'
# 获取文件夹中的所有文件路径
file_paths = [os.path.join(folder_path, file) for file in os.listdir(folder_path) if file.endswith('.xlsx')]
# 初始化最长表头
longest_header = []
# 遍历每个文件
for file_path in file_paths:
# 打开文件
df = pd.read_excel(file_path)
# 获取表头信息
header = df.columns.tolist()
# 更新最长表头
if len(header) > len(longest_header):
longest_header = header
# 关闭文件
df.close()
# 创建新的工作簿,用于存储合并后的数据
merged_df = pd.DataFrame(columns=longest_header)
# 遍历每个文件
for file_path in file_paths:
# 打开文件
df = pd.read_excel(file_path)
# 获取表头信息
header = df.columns.tolist()
# 遍历最长表头的每个列名
for column in longest_header:
# 检查当前列是否存在于表头中
if column not in header:
# 在表头中新增该列
df[column] = None
# 拷贝数据到新的工作簿
merged_df = merged_df.append(df, ignore_index=True)
# 关闭文件
df.close()
# 保存合并后的数据到新的工作簿
merged_file_path = os.path.join(folder_path, 'merged_data.xlsx')
merged_df.to_excel(merged_file_path, index=False)
请注意,代码中使用了Pandas库来处理Excel文件。确保已安装pandas库,如果没有安装,可以使用以下命令进行安装:
pip install pandas
``
原文地址: https://www.cveoy.top/t/topic/iIay 著作权归作者所有。请勿转载和采集!