Python 按 Sheet 合并多个 Excel 文件的实现方法
本文介绍如何使用 Python 将多个格式相同的 Excel 文件按 Sheet 名称进行合并。通过保留首个文件的首行并忽略后续文件首行,实现数据整合。代码示例展示了读取与写入 Excel 的具体逻辑,适用于需要批量处理多 Sheet 表格的场景。
按 Sheet 合并 Excel 的需求与格式
在实际工作中,常遇到多个 Excel 文件格式一致且包含多个 Sheet 的情况,这些 Sheet 的名称和结构均相同。此时,我们需要按照 Sheet 进行合并,确保合并后的表格结构与合并前保持一致。A、B、C 表的格式如图所示。


最终目标是将上述表格合并为下图所示的结构。


本次处理的策略是保留第一个文件的首行,而忽略其余文件的首行。因此,最终结果与将所有首行都保留的情况会有所不同。
Python 合并 Excel 的核心代码实现
import xlrd,xlsxwriter
#待合并excel
allxls=["C:/xxx/xxx.xlsx",
"C:/xxx/xxx.xlsx"]
#目标excel
end_xls="C:/xxx/merge.xlsx"
def open_xls(file):
try:
fh=xlrd.open_workbook(file)
return fh
except Exception as e:
print("打开文件错误:"+e)
#根据excel名以及第几个标签信息就可以得到具体标签的内容
def get_file_value(filename,sheetnum):
rvalue=[]
fh=open_xls(filename)
sheet=fh.sheets()[sheetnum]
row_num=sheet.nrows
for rownum in range(0,row_num):
rvalue.append(sheet.row_values(rownum))
return rvalue
def get_file_value_1(filename,sheetnum):
rvalue=[]
fh=open_xls(filename)
sheet=fh.sheets()[sheetnum]
row_num=sheet.nrows
for rownum in range(1,row_num):
rvalue.append(sheet.row_values(rownum))
return rvalue
#获取第一个excel的sheet个数以及名字作为标准
first_file_fh=open_xls(allxls[0])
first_file_sheet=first_file_fh.sheets()
first_file_sheet_num=len(first_file_sheet)
sheet_name=[]
for sheetname in first_file_sheet:
sheet_name.append(sheetname.name)
#定义一个目标excel
endxls=xlsxwriter.Workbook(end_xls)
all_sheet_value=[]
#把所有内容都放到列表all_sheet_value中
for sheet_num in range(0,first_file_sheet_num):
all_sheet_value.append([])
for i,file_name in enumerate(allxls):
if i==0:
print("正在读取"+file_name+"的第"+str(sheet_num+1)+"个标签...")
file_value=get_file_value(file_name,sheet_num)
all_sheet_value[sheet_num].append(file_value)
else:
print("正在读取"+file_name+"的第"+str(sheet_num+1)+"个标签...")
file_value=get_file_value_1(file_name,sheet_num)
all_sheet_value[sheet_num].append(file_value)
#print(all_sheet_value)
num=-1
sheet_index=-1
#将列表all_sheet_value的内容写入目标excel
for sheet in all_sheet_value:
sheet_index+=1
end_xls_sheet=endxls.add_worksheet(sheet_name[sheet_index])
num+=1
num1=-1
for sheet1 in sheet:
for sheet2 in sheet1:
num1+=1
num2=-1
for sheet3 in sheet2:
num2+=1
#print(num,num1,num2,sheet3)
#在第num1行的第num2列写入sheet3的内容
end_xls_sheet.write(num1,num2,sheet3)
endxls.close()
以上就是关于 Python 按 Sheet 合并多个 Excel 文件的示例代码介绍。如需了解更多相关 Python 合并 Excel 的内容,可搜索本站历史文章或继续浏览后续内容。感谢大家的支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













