python 批量合并多个工作表,从第二行开始,为什么表头没有了
path='C:/Users/Administrator/Desktop/无密文件'files_list=os.listdir(path) #获取目标文件夹内各文件的名称
new_wb=Workbook() #新建表格
new_ws=new_wb.active #获取工作簿
for file in files_list: #循环获取各表的名称
file_path=path+'/'+file #获取表格的路径
wb=load_workbook(file_path) #打开表格
ws=wb.active #打开工作簿
for row in ws.iter_rows(min_row=2,values_only=True): #循环获取表头以外的表格内容,从第2行开始
new_ws.append(row) #获取的内容写入新表
new_wb.save("最终完整版/1(多工作簿合并一个工作表) .xlsx") #保存表格 你的代码在合并时跳过了每个工作表的第一行(表头),所以合并后的新表没有表头。要保留表头,可以这样修改:
修改方案1:保留第一个文件的表头
path='C:/Users/Administrator/Desktop/无密文件'
files_list=os.listdir(path)
new_wb=Workbook()
new_ws=new_wb.active
first_file = True# 标记是否为第一个文件
for file in files_list:
file_path=path+'/'+file
wb=load_workbook(file_path)
ws=wb.active
if first_file:# 如果是第一个文件
# 读取所有行,包括表头
for row in ws.iter_rows(values_only=True):
new_ws.append(row)
first_file = False
else:# 其他文件跳过表头
for row in ws.iter_rows(min_row=2, values_only=True):
new_ws.append(row)
new_wb.save("最终完整版/1 (多工作簿合并一个工作表).xlsx")
修改方案2:手动添加表头
如果所有文件的表头相同,可以先读取一个文件的表头:
path='C:/Users/Administrator/Desktop/无密文件'
files_list=os.listdir(path)
new_wb=Workbook()
new_ws=new_wb.active
# 先获取第一个文件的表头
first_file_path = path+'/'+files_list
first_wb = load_workbook(first_file_path)
first_ws = first_wb.active
header =
# 写入表头
new_ws.append(header)
# 合并所有文件的数据(包括第一个文件)
for file in files_list:
file_path=path+'/'+file
wb=load_workbook(file_path)
ws=wb.active
for row in ws.iter_rows(min_row=2, values_only=True):
new_ws.append(row)
new_wb.save("最终完整版/1 (多工作簿合并一个工作表).xlsx")
主要修改:
1. 方案1使用 first_file 标志区分第一个文件和其他文件
2. 方案2先单独读取表头,然后合并所有文件时都从第2行开始
建议使用方案1,更简洁且能处理表头不完全相同的情况。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]