# -*- coding: utf-8 -*-
#将多个Excel文件合并成一个
import os
import xlrd
import xlsxwriter
#打开一个excel文件
def open_xls(file):
fh=xlrd.open_workbook(file)
return fh
#获取excel中所有的sheet表
def getsheet(fh):
return fh.sheets()
#获取sheet表的行数
def getnrows(fh,sheet):
table=fh.sheets()[sheet]
return table.nrows
#读取文件内容并返回行内容
def getFilect(file,shnum):
fh=open_xls(file)
table=fh.sheets()[shnum]
num=table.nrows
for row in range(num):
rdata=table.row_values(row)
datavalue.append(rdata)
return datavalue
#获取sheet表的个数
def getshnum(fh):
x=0
sh=getsheet(fh)
for sheet in sh:
x+=1
return x
def get_allfile_msg(file_dir):
for root, dirs, files in os.walk(file_dir):
# print(root) #当前目录路径
# print(dirs) #当前路径下所有子目录
print(files) #当前路径下所有非目录子文件
return root, dirs, files
'''
将目录的路径加上'/'和文件名,组成文件的路径
'''
def get_allfile_url(root, files):
i = 0
allFile_url = []
for f in files:
i += 1
print(len(files))
print(i)
if i > len(files):
break
file_url = root + '/' + f
print (file_url)
allFile_url.append(file_url)
print (allFile_url)
return allFile_url
if __name__=='__main__':
#定义要合并的excel文件列表
# allxls=['D:\\_QKTools\\PY\\e\\Test1_20160311.xlsx' , 'D:\\_QKTools\\PY\\e\\Test1_20160729.xlsx']
#存储所有读取的结果
file_dir = 'D:/_QKTools/PY/e'
root, dirs, files = get_allfile_msg(file_dir)
allxls = get_allfile_url(root, files)
print(allxls)
# os.system("pause")
datavalue=[]
for fl in allxls:
fh=open_xls(fl)
x=getshnum(fh)
for shnum in range(2):
print("正在读取文件:"+str(fl)+"的第"+str(shnum)+"个sheet表的内容...")
rvalue=getFilect(fl,shnum)
#定义最终合并后生成的新文件
endfile='D:\\_QKTools\\PY\\e\\11111.xlsx'
wb1=xlsxwriter.Workbook(endfile)
#创建一个sheet工作对象
ws=wb1.add_worksheet()
for a in range(len(rvalue)):
for b in range(len(rvalue[a])):
c=rvalue[a][b]
ws.write(a,b,c)
wb1.close()
print("文件合并完成")
#将多个Excel文件合并成一个
import os
import xlrd
import xlsxwriter
#打开一个excel文件
def open_xls(file):
fh=xlrd.open_workbook(file)
return fh
#获取excel中所有的sheet表
def getsheet(fh):
return fh.sheets()
#获取sheet表的行数
def getnrows(fh,sheet):
table=fh.sheets()[sheet]
return table.nrows
#读取文件内容并返回行内容
def getFilect(file,shnum):
fh=open_xls(file)
table=fh.sheets()[shnum]
num=table.nrows
for row in range(num):
rdata=table.row_values(row)
datavalue.append(rdata)
return datavalue
#获取sheet表的个数
def getshnum(fh):
x=0
sh=getsheet(fh)
for sheet in sh:
x+=1
return x
def get_allfile_msg(file_dir):
for root, dirs, files in os.walk(file_dir):
# print(root) #当前目录路径
# print(dirs) #当前路径下所有子目录
print(files) #当前路径下所有非目录子文件
return root, dirs, files
'''
将目录的路径加上'/'和文件名,组成文件的路径
'''
def get_allfile_url(root, files):
i = 0
allFile_url = []
for f in files:
i += 1
print(len(files))
print(i)
if i > len(files):
break
file_url = root + '/' + f
print (file_url)
allFile_url.append(file_url)
print (allFile_url)
return allFile_url
if __name__=='__main__':
#定义要合并的excel文件列表
# allxls=['D:\\_QKTools\\PY\\e\\Test1_20160311.xlsx' , 'D:\\_QKTools\\PY\\e\\Test1_20160729.xlsx']
#存储所有读取的结果
file_dir = 'D:/_QKTools/PY/e'
root, dirs, files = get_allfile_msg(file_dir)
allxls = get_allfile_url(root, files)
print(allxls)
# os.system("pause")
datavalue=[]
for fl in allxls:
fh=open_xls(fl)
x=getshnum(fh)
for shnum in range(2):
print("正在读取文件:"+str(fl)+"的第"+str(shnum)+"个sheet表的内容...")
rvalue=getFilect(fl,shnum)
#定义最终合并后生成的新文件
endfile='D:\\_QKTools\\PY\\e\\11111.xlsx'
wb1=xlsxwriter.Workbook(endfile)
#创建一个sheet工作对象
ws=wb1.add_worksheet()
for a in range(len(rvalue)):
for b in range(len(rvalue[a])):
c=rvalue[a][b]
ws.write(a,b,c)
wb1.close()
print("文件合并完成")