⽤Python将多个excel表格合并为⼀个表格
⽣活中经常会碰到多个excel表格汇总成⼀个表格的情况,⽐如你发放了⼀份表格让班级所有同学填写,⽽你负责将⼤家的结果合并成⼀个。诸如此类的问题有很多。除了⼈⼯将所有表格的内容⼀个⼀个复制到汇总表格⾥,那么如何⽤Python⾃动实现这些⼯作呢~
我不知道有没有其他更⽅便的合并⽅法,先⽤Python实现这个功能,⾃⼰⽤就很⽅便了。
⽐如,在⽂件夹下有如下7个表格(想象⼀下有100个或更多的表格需要合并)
作为样例,每个表格的内容均为
运⾏程序,将7个表格合并成了test.xls
打开test.xls,发现成功合并了多个表格的数据到⼀个表格⾥
代码运⾏之前,需要安装Numpy,xlrd,xlwt三个扩展包。话不多说,代码如下(见评论区)
#下⾯这些变量需要您根据⾃⼰的具体情况选择
biaotou=['学号','学⽣姓名','第⼀志愿','第⼆志愿','第三志愿','第四志愿','第五志愿','','性别','备注']
#在哪⾥搜索多个表格
filelocation="C:\\Users\\ann\Documents\\Python Scripts\\"
#当前⽂件夹下搜索的⽂件名后缀
fileform="xls"
#将合并后的表格存放到的位置
filedestination="C:\\Users\\ann\Documents\\Python Scripts\\"
#合并后的表格命名为file
file="test"
#⾸先查默认⽂件夹下有多少⽂档需要整合
import glob
from numpy import *
filearray=[]
for filename in glob.glob(filelocation+"*."+fileform):
filearray.append(filename)
#以上是从pythonscripts⽂件夹下读取所有excel表格,并将所有的名字存储到列表filearray
print("在默认⽂件夹下有%d个⽂档哦"%len(filearray))
ge=len(filearray)
matrix = [None]*ge
#实现读写数据
#下⾯是将所有⽂件读数据到三维列表cell[][][]中(不包含表头)
import xlrd
for i in range(ge):
fname=filearray[i]
bk=xlrd.open_workbook(fname)
try:
sh=bk.sheet_by_name("Sheet1")
except:
print ("在⽂件%s中没有到sheet1,读取⽂件数据失败,要不你换换表格的名字?" %fname)
ws
matrix[i] = [0]*(nrows-1)
ls
for m in range(nrows-1):
matrix[i][m] = ["0"]*ncols
for j in range(1,nrows):
for k in range(0,ncols):
matrix[i][j-1][k]=sh.cell(j,k).value
#下⾯是写数据到新的表格test.xls中哦
import xlwt
filename=xlwt.Workbook()
sheet=filename.add_sheet("hel")
#下⾯是把表头写上
for i in range(0,len(biaotou)):
sheet.write(0,i,biaotou[i])
#求和前⾯的⽂件⼀共写了多少⾏
zh=1
for i in range(ge):
for j in range(len(matrix[i])):
for k in range(len(matrix[i][j])):
sheet.write(zh,k,matrix[i][j][k])
zh=zh+1
print("我已经将%d个⽂件合并成1个⽂件,并命名为%s.xls.快打开看看正确不?"%(ge,file))
filename.save(filedestination+file+".xls")
#下⾯这些变量需要您根据⾃⼰的具体情况选择
biaotou=['学号','学⽣姓名','第⼀志愿','第⼆志愿','第三志愿','第四志愿','第五志愿','','性别','备注']
#在哪⾥搜索多个表格
filelocation="C:\\Users\\ann\Documents\\Python Scripts\\"
#当前⽂件夹下搜索的⽂件名后缀
fileform="xls"
#将合并后的表格存放到的位置
filedestination="C:\\Users\\ann\Documents\\Python Scripts\\"
#合并后的表格命名为file
file="test"
#⾸先查默认⽂件夹下有多少⽂档需要整合
import glob
from numpy import *
filearray=[]
for filename in glob.glob(filelocation+"*."+fileform):
filearray.append(filename)
#以上是从pythonscripts⽂件夹下读取所有excel表格,并将所有的名字存储到列表filearray
print("在默认⽂件夹下有%d个⽂档哦"%len(filearray))
ge=len(filearray)
matrix = [None]*ge
#实现读写数据
#下⾯是将所有⽂件读数据到三维列表cell[][][]中(不包含表头)
import xlrd
for i in range(ge):
fname=filearray[i]
python怎么读文件夹下的文件夹
bk=xlrd.open_workbook(fname)
try:
sh=bk.sheet_by_name("Sheet1")
except:
print ("在⽂件%s中没有到sheet1,读取⽂件数据失败,要不你换换表格的名字?" %fname)          ws
matrix[i] = [0]*(nrows-1)
ls
for m in range(nrows-1):
matrix[i][m] = ["0"]*ncols
for j in range(1,nrows):
for k in range(0,ncols):
matrix[i][j-1][k]=sh.cell(j,k).value
#下⾯是写数据到新的表格test.xls中哦
import xlwt
filename=xlwt.Workbook()
sheet=filename.add_sheet("hel")
#下⾯是把表头写上
for i in range(0,len(biaotou)):
sheet.write(0,i,biaotou[i])
#求和前⾯的⽂件⼀共写了多少⾏
zh=1
for i in range(ge):
for j in range(len(matrix[i])):
for k in range(len(matrix[i][j])):
sheet.write(zh,k,matrix[i][j][k])
zh=zh+1
print("我已经将%d个⽂件合并成1个⽂件,并命名为%s.xls.快打开看看正确不?"%(ge,file))
filename.save(filedestination+file+".xls")
我的运⾏环境是windows7 ,64位。Python版本是3.5.1,32位。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。