随笔 - 29  文章 - 0  评论 - 0  阅读 - 47788

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   Wuxuanlin  阅读(1273)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示