想必工作中,会遇见将多个Excel文件合并成一个Excel文件,接下来完成如下步骤即可完成合并
注意注意:前提一定是列数及字段名称均相同
代码如下:
# -*- coding: utf-8 -*-
#1.导入需要使用的包
import xlrd #读取Excel文件的包
import xlsxwriter #将文件写入Excel的包
#2.打开一个excel文件
def open_xls(file):
f = xlrd.open_workbook(file)
return f
#3.获取excel中所有的sheet表
def getsheet(f):
return f.sheets()
#4.获取sheet表的行数
def get_Allrows(f,sheet):
table=f.sheets()[sheet]
return table.nrows
#5.读取文件内容并返回行内容
def getFile(file,shnum):
f=open_xls(file)
table=f.sheets()[shnum]
num=table.nrows
for row in range(num):
rdata=table.row_values(row)
datavalue.append(rdata)
return datavalue
#6.获取sheet表的个数
def getshnum(f):
x=0
sh=getsheet(f)
for sheet in sh:
x+=1
return x
#7.函数入口
if __name__=='__main__':
#定义要合并的excel文件列表
allxls=['订单报表-2019-01.xls',
'订单报表-2019-02.xls',
'订单报表-2019-03.xls',
'订单报表-2019-04.xls',
'订单报表-2019-05.xls',
'订单报表-2019-06.xls',
'订单报表-2019-07.xls',
'订单报表-2019-08.xls',
'订单报表-2019-09.xls',
'订单报表-2019-10.xls',
'订单报表-2019-11.xls',
'订单报表-2019-12.xls',
'订单报表-2020-01.xls',
'订单报表-2020-02.xls',
'订单报表-2020-03.xls',
'订单报表-2020-04.xls',
'订单报表-2020-05.xls',
'订单报表-2020-06.xls',
'订单报表-2020-07.xls',
'订单报表-2020-08.xls',
'订单报表-2020-09.xls',
'订单报表-2020-10.xls',
'订单报表-2020-11.xls',
'订单报表-2020-12.xls',
'订单报表-2021-01.xls',
'订单报表-2021-02.xls',
'订单报表-2021-03.xls',
'订单报表-2021-04.xls',
'订单报表-2021-05.xls',
'订单报表-2021-06.xls',
'订单报表-2021-07.xls'
] #列表中的为要读取文件的路径
#存储所有读取的结果
datavalue=[]
for fl in allxls:
f=open_xls(fl)
x=getshnum(f)
for shnum in range(x):
print("正在读取文件:"+str(fl)+"的第"+str(shnum)+"个sheet表的内容...")
rvalue=getFile(fl,shnum)
#定义最终合并后生成的新文件
endfile='结果.xls'
wb=xlsxwriter.Workbook(endfile)
#创建一个sheet工作对象
ws=wb.add_worksheet()
for a in range(len(rvalue)):
for b in range(len(rvalue[a])):
c=rvalue[a][b]
ws.write(a,b,c)
wb.close()
print("文件合并完成")