查看原文
其他

Python教学案例|合并多个excel文件

okeylove 信息科技时代 2024-03-15

Python教学案例|读写excel文件

操作excel文件常用语句:

导入模块

import xlrd

打开Excel文件读取数据 

data = xlrd.open_workbook('excelFile.xls')

获取一个工作表

table = data.sheets()[0] #通过索引顺序获取
table = data.sheet_by_index(0) #通过索引顺序获取
table = data.sheet_by_name(u'Sheet1')#通过名称获取

获取整行和整列的值(数组)

table.row_values(i)
table.col_values(i)

获取行数和列数

nrows = table.nrows
ncols = table.ncols

 循环行列表数据 

for i in range(nrows ):
print table.row_values(i)

单元格数据 

cell_A1 = table.cell(0,0).value
cell_C4 = table.cell(2,3).value 

使用行列索引

cell_A1 = table.row(0)[0].value
cell_A2 = table.col(1)[0].value 

简单的写入

row = 0
col = 0
# 类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
ctype = 1 value = '单元格的值'
xf = 0 # 扩展的格式化
table.put_cell(row, col, ctype, value, xf)
table.cell(0,0) #单元格的值
table.cell(0,0).value #单元格的值

01

准备好表格及数据

生活中经常会碰到多个excel表格汇总成一个表格的情况,除了人工将所有表格的内容一个一个复制到汇总表格里,那么如何用Python自动实现这些工作呢?

比如,在文件夹下有如下7个表格(想象一下有100个或更多的表格需要合并):

每个表格的内容类似为:

02

编写代码测试

代码运行之前,需要安装Numpy,xlrd,xlwt三个扩展包,代码如下:

可直接复制代码如下:

biaotou=['证书编号','准考证号','省份','姓名','性别','总分','学校','年级','高中阶段获历年NOIP'] #表头
filelocation="D:\\test\\" #在哪里搜索多个表格
fileform="xlsx" #当前文件夹下搜索的文件名后缀
filedestination="D:\\" #将合并后的表格存放到的位置
file="test" #合并后的表格命名为file
import glob
from numpy import *
filearray=[] #首先查找默认文件夹下有多少文档需要整合
for filename in glob.glob(filelocation+"*."+fileform):
filearray.append(filename)
#以上是从pythonscripts文件夹下读取所有excel表格,并将所有的名字存储到列表filearray
print("在默认文件夹下有%d个文档哦"%len(filearray))
s=len(filearray)
matrix = [None]*s #实现读写数据
for i in range(s):
print(filearray[i])
import xlrd #下面是将所有文件读数据到三维列表cell[][][]中(不包含表头)
for i in range(s):
fname=filearray[i]
bk=xlrd.open_workbook(fname)
try:
sh=bk.sheet_by_name("Sheet1")
except:
print ("在文件%s中没有找到sheet1,读取文件数据失败,要不你换换表格的名字?" %fname)
nrows=sh.nrows
matrix[i] = [0]*(nrows-1)
ncols=sh.ncols
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.xlsx中
import xlwt
filename=xlwt.Workbook()
sheet=filename.add_sheet("Sheet1")
#下面是将表头写上
for i in range(0,len(biaotou)):
sheet.write(0,i,biaotou[i])
#下面是将数据写上
row=1
for i in range(s):
for j in range(len(matrix[i])):
for k in range(len(matrix[i][j])):
sheet.write(row,k,matrix[i][j][k])
row=row+1
print("我已经将%d个文件合并成1个文件,并命名为%s.xlsx.快打开看看正确不?"%(s,file))
filename.save(filedestination+file+".xlsx")

运行程序,将7个表格合并成了test.xlsx:

打开test.xlsx,发现成功合并了多个表格的数据到一个表格里:

然后可以按自己需要排序了,比如按成绩排序效果如下:

END

继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存