读取excel
import xlrd
workbook=xlrd.open_workbook(r'C:\Users\Desktop\hebing\学生登记表.xls')
sheet=workbook.sheet_by_index(0)#根据序列号来打开某一个sheetrow=sheet.nrows#将excel的行数赋值给变量col=sheet.ncols#将excel的列数赋值给变量print(sheet.cell_value(1,0))#打印出第二行第一列的单元格内容
还是昨天那个excel:
上面的代码是打印出第二行第一列的单元格,打印结果是小明.
以此类推,你可以打印出所有你指定的单元格的数据.
但是有时候我们想迅速查找某一些数据,比如我不知道小红是第几行第几列,我想显示小红的所有资料该怎么做呢?
for i in range(row):if '小红' in sheet.row_values(i):print(sheet.row_values(i))
首先第一行写一个for循环,循环的范围是excel的行数
然后我么用row_values()来获取excel每一行的数据,括号里面是什么数字,就会抓取那一行所有的数据.
而row_values的结果会返回一个列表,每一个单元格都是这个列表里面的一个元素,因此这里我们用if语句来判断小红是否在这个列表之中,如果在,我们就把这一整行的数据都打印出来.
这个逻辑不难吧?觉得难的同学你前面的python基础一定没有打扎实.
那么还有一种情况,就是我们只记得某一个数据的部分内容,该怎么查找数据呢?
比如这里面我忘了小明的名字,只知道名字里面带有一个"明"字,那我如何查找到数据呢?
for i in range(row):for j in range(col):if str(sheet.cell_value(i,j)).find('明')!=-1:print(sheet.row_values(i))
首先来两个循环,一个是为了遍历excel的行数,一个是为了遍历列数.
然后我们对每个单元格逐个进行判断,判断单元格是否包含"明"这个字,如果找到了,那么我们就打印出这一行的所有数据.
这里主要有两点注意:
一:
这里主要是find()函数的运用.
find()函数里面可以传递两个参数,find(参数1,参数2).
参数1是你要查找的目标,比如我们这里查找的是"明"这个字.
而参数2指的是你要从第几位开始查找.
比如有一串字符串"小明小东大明"
如果我们对这个字符串进行查找,我们想查找第二个明出现的位置,那么我们就可以:
"小明小东大明".find('明',2)
2的意思是让find函数从第三个位置开始查找,这样程序就会忽略第一个明,来查找第二个明的位置.
find函数如果查找到了,就会返回所在的索引位置,如果没有查找到,就会返回-1.因此我们在例子里面写的是不等于-1.不等于-1意思就是找到"明"这个字符串.
二:
我们在
sheet.cell_value(i,j)
前面加了str().
之所以要加str是为了把每一个单元格都转化成字符串.
为什么呢?
我们都知道excel里面的数据含有很多的格式,比如小数点,比如日期,比如整数等等,而find函数只能对字符串进行查找,因此如果不用str的话,当程序遍历到一个非字符串的单元格数据时,程序就会报错.
很简单吧?
如果觉得难,那么回头看看前面的python基础,了解基本的语法以后再来看.