python-将一个excel中多个sheet合并至新表格中一个sheet

'''
将多个/一个excel表格中的sheet合并至新表格中的一个sheet
'''

 1 # -*- coding: utf-8 -*-
 2 
 3 # 导入需要使用的包
 4 import xlrd        # 读取excel文件的包
 5 import xlsxwriter  # 将文件写入excel的包
 6 
 7 # 打开一个excel文件
 8 def open_xls(file):
 9     f = xlrd.open_workbook(file)
10     return f
11 
12 # 获取excel中所有的sheet表
13 def getsheet(f):
14     return f.sheets()
15 
16 # 获取sheet表的行数
17 def get_Allrows(f,sheet):
18     table = f.sheets()[sheet]
19     return table.nrows
20 
21 # 读取文件内容并返回行内容
22 def getFile(file,shnum):
23     f=open_xls(file)
24     table=f.sheets()[shnum]
25     num=table.nrows
26     for row in range(num):
27         rdata=table.row_values(row)
28         datavalue.append(rdata)
29     return datavalue
30 
31 # 获取sheet表的个数
32 def getshnum(f):
33     x=0
34     sh=getsheet(f)
35     for sheet in sh:
36         x+=1
37     return x
38 
39 # 函数入口
40 if __name__=='__main__':
41     # # 定义要合并的excel文件列表
42     # dir = './tstdb'
43     # # 获取目录下所有的表
44     # allxls = os.listdir(dir)
45     allxls=['./tables.xls']  #列表中的为要读取的文件路径
46     # 存储所有读取的结果
47     datavalue=[]
48     for fl in allxls:
49         # fl = os.path.join(dir,onexls)
50         f=open_xls(fl)
51         x=getshnum(f)
52         for shnum in range(x):
53             print("正在读取文件:"+str(fl)+"的第"+str(shnum)+"个sheet表的内容...")
54             rvalue=getFile(fl,shnum)
55     # 定义最终合并后生成的新文件
56     endfile='excel.xlsx'
57     wb=xlsxwriter.Workbook(endfile)
58     # 创建一个sheet工作对象
59     ws=wb.add_worksheet()
60     for a in range(len(rvalue)):
61         for b in range(len(rvalue[a])):
62             c=rvalue[a][b]
63             ws.write(a,b,c)
64     wb.close()
65     print("文件合并完成")

 

posted on 2022-03-22 16:38  Wuxuanlin  阅读(1217)  评论(0编辑  收藏  举报