当前位置:   article > 正文

用Python将多个excel表格合并为一个表格_open xls filebiao

open xls filebiao
  1. #下面这些变量需要您根据自己的具体情况选择
  2. biaotou=['学号','学生姓名','第一志愿','第二志愿','第三志愿','第四志愿','第五志愿','联系电话','性别','备注']
  3. #在哪里搜索多个表格
  4. #C:\\Users\\lihwa11\\Desktop\\Python\\filename
  5. filelocation="C:\\Users\\lihwa11\\Desktop\\Python\\filename\\"
  6. #当前文件夹下搜索的文件名后缀
  7. fileform="xls"
  8. #将合并后的表格存放到的位置
  9. filedestination="C:\\Users\\lihwa11\\Desktop\\Python\\filename\\"
  10. #合并后的表格命名为file
  11. file="carson"
  12. #首先查找默认文件夹下有多少文档需要整合
  13. import glob
  14. from numpy import *
  15. filearray=[]
  16. for filename in glob.glob(filelocation+"*."+fileform):
  17. filearray.append(filename)
  18. #以上是从pythonscripts文件夹下读取所有excel表格,并将所有的名字存储到列表filearray
  19. print("在默认文件夹下有%d个文档哦"%len(filearray))
  20. ge=len(filearray)
  21. matrix = [None]*ge
  22. #实现读写数据
  23. #下面是将所有文件读数据到三维列表cell[][][]中(不包含表头)
  24. import xlrd
  25. for i in range(ge):
  26. fname=filearray[i]
  27. bk=xlrd.open_workbook(fname)
  28. try:
  29. sh=bk.sheet_by_name("Sheet1")
  30. except:
  31. print ("在文件%s中没有找到sheet1,读取文件数据失败,要不你换换表格的名字?" %fname)
  32. nrows=sh.nrows
  33. matrix[i] = [0]*(nrows-1)
  34. ncols=sh.ncols
  35. for m in range(nrows-1):
  36. matrix[i][m] = ["0"]*ncols
  37. for j in range(1,nrows):
  38. for k in range(0,ncols):
  39. matrix[i][j-1][k]=sh.cell(j,k).value
  40. #下面是写数据到新的表格test.xls中哦
  41. import xlwt
  42. filename=xlwt.Workbook()
  43. sheet=filename.add_sheet("hel")
  44. #下面是把表头写上
  45. for i in range(0,len(biaotou)):
  46. sheet.write(0,i,biaotou[i])
  47. #求和前面的文件一共写了多少行
  48. zh=1
  49. for i in range(ge):
  50. for j in range(len(matrix[i])):
  51. for k in range(len(matrix[i][j])):
  52. sheet.write(zh,k,matrix[i][j][k])
  53. zh=zh+1
  54. print("我已经将%d个文件合并成1个文件,并命名为%s.xls.快打开看看正确不?"%(ge,file))
  55. filename.save(filedestination+file+".xls")

 

 

 奇了怪了,这里出现了一个问题,就是文件后缀名为xlsx则会出现失败!等会看看怎么回事!

----------------------------------------------------更新-------------------------------------------------

  1. # -*- coding: utf-8 -*-
  2. #将多个Excel文件合并成一个
  3. import xlrd
  4. import xlsxwriter
  5. #打开一个excel文件
  6. def open_xls(file):
  7. fh=xlrd.open_workbook(file)
  8. return fh
  9. #获取excel中所有的sheet表
  10. def getsheet(fh):
  11. return fh.sheets()
  12. #获取sheet表的行数
  13. def getnrows(fh,sheet):
  14. table=fh.sheets()[sheet]
  15. return table.nrows
  16. #读取文件内容并返回行内容
  17. def getFilect(file,shnum):
  18. fh=open_xls(file)
  19. table=fh.sheets()[shnum]
  20. num=table.nrows
  21. for row in range(num):
  22. rdata=table.row_values(row)
  23. datavalue.append(rdata)
  24. return datavalue
  25. #获取sheet表的个数
  26. def getshnum(fh):
  27. x=0
  28. sh=getsheet(fh)
  29. for sheet in sh:
  30. x+=1
  31. return x
  32. if __name__=='__main__':
  33. #定义要合并的excel文件列表
  34. allxls=['C:/Users/lihwa11/Desktop/Python/filename/2.xlsx',
  35. 'C:/Users/lihwa11/Desktop/Python/filename/4.xlsx','C:/Users/lihwa11/Desktop/Python/filename/34.xlsx',
  36. 'C:/Users/lihwa11/Desktop/Python/filename/54.xlsx','C:/Users/lihwa11/Desktop/Python/filename/b4.xlsx']
  37. #存储所有读取的结果
  38. datavalue=[]
  39. for fl in allxls:
  40. fh=open_xls(fl)
  41. x=getshnum(fh)
  42. for shnum in range(x):
  43. print("正在读取文件:"+str(fl)+"的第"+str(shnum)+"个sheet表的内容...")
  44. rvalue=getFilect(fl,shnum)
  45. #定义最终合并后生成的新文件
  46. endfile='demo.xlsx'
  47. wb1=xlsxwriter.Workbook(endfile)
  48. #创建一个sheet工作对象
  49. ws=wb1.add_worksheet()
  50. for a in range(len(rvalue)):
  51. for b in range(len(rvalue[a])):
  52. c=rvalue[a][b]
  53. ws.write(a,b,c)
  54. wb1.close()
  55. print("文件合并完成")

补充链接:https://blog.csdn.net/Together_CZ/article/details/86689272 

更新:还有利用pandas来处理的;

  1. import pandas as pd
  2. file1='C:/Users/lihwa11/Desktop/Python/filename/2.xlsx'
  3. file2='C:/Users/lihwa11/Desktop/Python/filename/4.xlsx'
  4. file3='C:/Users/lihwa11/Desktop/Python/filename/34.xlsx'
  5. file=[file1,file2,file3]
  6. li=[]
  7. for i in file:
  8. li.append(pd.read_excel(i))
  9. writer = pd.ExcelWriter('C:/Users/lihwa11/Desktop/Python/filename/output.xlsx')
  10. pd.concat(li).to_excel(writer,'Sheet1',index=False)
  11. writer.save()

  1. #综上所述,还是pandas好用
  2. import pandas as pd
  3. file1='C:/Users/lihwa11/Desktop/Python/filename/a.xlsx'
  4. file2='C:/Users/lihwa11/Desktop/Python/filename/b.xlsx'
  5. file3='C:/Users/lihwa11/Desktop/Python/filename/c.xlsx'
  6. file4='C:/Users/lihwa11/Desktop/Python/filename/d.xlsx'
  7. file5='C:/Users/lihwa11/Desktop/Python/filename/e.xlsx'
  8. dfs = []
  9. for fn in (file1,file2,file3,file4,file5):
  10. dfs.append(pd.read_excel(fn))
  11. df = pd.concat(dfs)
  12. df.to_excel('C:/Users/lihwa11/Desktop/Python/filename/sun.xlsx',index = False)

 

参考链接 :https://zhuanlan.zhihu.com/p/36031795   对应的数据包

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/317998
推荐阅读
相关标签
  

闽ICP备14008679号