#用python实现将三个excel合并成一个excel#第一个测试文件 第二个测试文件 第三个测试文件# 其中每个文件中有多个sheet,需要将其全部合并import xlrd,xlsxwriter#设置要合并的所有文件allxls=["/Users/xubin/myapp/pythonfile/第一个测试文件.xlsx","/Users/xubin/myapp/pythonfile/第二个测试文件.xlsx","/Users/xubin/myapp/pythonfile/第三个测试文件.xlsx"]#设置合并到的文件endxls ="/Users/xubin/myapp/pythonfile/endxls.xlsx"#打开表格def open_xls(file): try: fh=xlrd.open_workbook(file) return fh except Exception as e: print(str("打开出错,错误为:"+e))#获取所有sheetdef getsheet(fh): return fh.sheets()#读取某个sheet的行数def getnrows(fh,sheet): table=fh.sheets()[sheet] content=table.nrows return content#读取某个文件的内容并返回所有行的值def getfilect(fh,fl,shnum): fh=open_xls(fl) table=fh.sheet_by_name(shname[shnum]) num=getnrows(fh,shnum) lenrvalue=len(rvalue) for row in range(0,num): rdata=table.row_values(row) rvalue.append(rdata) print(rvalue[lenrvalue:]) filevalue.append(rvalue[lenrvalue:]) return filevalue#存储所有读取的结果filevalue=[]#存储一个标签的结果svalue=[]#存储一行结果rvalue=[]#存储各sheet名shname=[]#读取第一个待读文件,获得sheet数fh=open_xls(allxls[0])sh=getsheet(fh)x=0for sheet in sh: shname.append(sheet.name) svalue.append([]) x+=1#依次读取各sheet的内容#依次读取各文件当前sheet的内容for shnum in range(0,x): for fl in allxls: print("正在读取文件:"+str(fl)+"的第"+str(shnum)+"个标签的…") filevalue=getfilect(fh,fl,shnum) svalue[shnum].append(filevalue) #print(svalue[0]) #print(svalue[1])#由于apped具有叠加关系,分析可得所有信息均在svalue[0][0]中存储#svalue[0][0]元素数量为sheet标签数(sn)*文件数(fn)sn=xfn=len(allxls)endvalue=[]#设置一个函数专门获取svalue里面的数据,即获取各项标签的数据def getsvalue(k): for z in range(k,k+fn): endvalue.append(svalue[0][0][z]) return endvalue#打开最终写入的文件wb1=xlsxwriter.Workbook(endxls)#创建一个sheet工作对象ws=wb1.add_worksheet()polit=0linenum=0#依次遍历每个sheet中的数据for s in range(0,sn*fn,fn): thisvalue=getsvalue(s) tvalue=thisvalue[polit:] #将一个标签的内容写入新文件中 for a in range(0,len(tvalue)): for b in range(0,len(tvalue[a])): for c in range(0,len(tvalue[a][b])): #print(linenum) #print(c) data=tvalue[a][b][c] ws.write(linenum,c,data) linenum+=1 #叠加关系,需要设置分割点 polit=len(thisvalue)wb1.close() 继续阅读与本文标签相同的文章
上一篇 :
3.python文件操作及异常处理
下一篇 :
GitLab,是谁给了你歧视中国程序员的勇气?
-
sentinel dubbo适配机制
2026-05-24栏目: 教程
-
面试 LockSupport.park()会释放锁资源吗?
2026-05-24栏目: 教程
-
死磕 java线程系列之线程池深入解析——未来任务执行流程
2026-05-24栏目: 教程
-
HIVE自动刷表导数据
2026-05-24栏目: 教程
-
sentinel 滑动窗口统计机制
2026-05-24栏目: 教程
