Python Excel数据查找

来源:互联网 发布:java 中的super this 编辑:程序博客网 时间:2024/06/05 19:06

今天突然被老师叫去帮她统计成绩,然后发现是一个大坑。为什么这么说呢:

因为她英语成绩竟然 分了20个excel文件来存。

我们要查找出数学50以上,并且英语90以上的人。这就很尴尬了,我们本来打算都打开来查,但是我的mac打开excel表格的速度实在不敢恭维。怎么办,一个一个查太慢了,有70个人呢。于是乎晚上搜索一下,决定快速写一个脚本来进行查询。

  • xlrd 使用介绍
  • 实际使用
    • Talk is cheapshow me the code
  • 总结

xlrd 使用介绍

1、导入模块

​ import xlrd

2、打开Excel文件读取数据

​ data = xlrd.open_workbook(‘excelFile.xls’)

3、使用技巧

获取一个工作表

​ 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 #单元格的值’

实际使用

我的目的是遍历所有的excel表格,然后根据统计出来的50分以上的人的学号的最后几位, 查询出他的姓名和英语成绩。

表格内容:

学号 姓名 行政班级 科目班级 科目老师 考试用卷 考试时间 考试状态 成绩 Listening Comprehension Reading Comprehension Cloze 201730054435 杨 173班 2017大学英语新生分级测试试卷(第二场) 2017-09-11 10:30:26—2017-09-11 11:10:22 已阅卷 48.0 12.0 12.0 24.0 201730013371 姚 172班 2017大学英语新生分级测试试卷(第二场) 2017-09-11 10:14:49—2017-09-11 11:09:20 已阅卷 60.0 26.0 10.0 24.0 201730022304 王 15安全 2017大学英语新生分级测试试卷(第二场) 2017-09-11 10:14:20—2017-09-11 11:11:13 已阅卷 86.0 36.0 20.0 30.0

Talk is cheap,show me the code!

# -*- coding:utf8 -*-import xlrdimport osid = u'85028'def find(path,id):    for rt, dirs, files in os.walk(path):        for f in files:            if f != ".DS_Store":                path = rt+os.path.sep+f                workbook = xlrd.open_workbook(path)                sheet_names = workbook.sheet_names()                all_value = workbook.sheet_by_index(0)                length = all_value.nrows                for i in xrange(length):                    row = all_value.row_values(i)                    if id in row[0]:                        print row[1].encode('utf8'),row[8]                    # print path                    # breakif __name__ == "__main__":    path = r"/Users/liruopeng/Downloads/score/english"    while 1:        nID = raw_input("请输入学号中的一部分:")        find(path,nID)

输出结果:

请输入学号中的一部分:85028张立维 94.0

总结

python 操作 excel还是比价容易的,边查遍写,该脚本在15分钟以内就写完了。在后续的查找中,大幅度提高了我们的效率。不过下次还有这样的事,还是把数据导入到数据库中吧。

原创粉丝点击