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个或更多的表格需要合并):

使用Python批量合并Excel文件 python怎么合并多个excel表_使用Python批量合并Excel文件

每个表格的内容类似为:

使用Python批量合并Excel文件 python怎么合并多个excel表_使用Python批量合并Excel文件_02

02

编写代码测试

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

使用Python批量合并Excel文件 python怎么合并多个excel表_.sh文件怎么写_03

使用Python批量合并Excel文件 python怎么合并多个excel表_使用Python批量合并Excel文件_04

可直接复制代码如下:

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表格,并将所有的名字存储到列表filearrayprint("在默认文件夹下有%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.ncolsfor m in range(nrows-1):    
        matrix[i][m] = ["0"]*ncolsfor 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:

使用Python批量合并Excel文件 python怎么合并多个excel表_.sh文件怎么写_05

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

使用Python批量合并Excel文件 python怎么合并多个excel表_.sh文件怎么写_06

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

使用Python批量合并Excel文件 python怎么合并多个excel表_.sh文件怎么写_07

END