当前位置: 首页 > 工具软件 > Python Excel > 使用案例 >

Python Excel数据查找

邓俊英
2023-12-01

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

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

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

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 ComprehensionReading ComprehensionCloze
201730054435173班2017大学英语新生分级测试试卷(第二场)2017-09-11 10:30:26—2017-09-11 11:10:22已阅卷48.012.012.024.0
201730013371172班2017大学英语新生分级测试试卷(第二场)2017-09-11 10:14:49—2017-09-11 11:09:20已阅卷60.026.010.024.0
20173002230415安全2017大学英语新生分级测试试卷(第二场)2017-09-11 10:14:20—2017-09-11 11:11:13已阅卷86.036.020.030.0

Talk is cheap,show me the code!

# -*- coding:utf8 -*-
import xlrd
import os


id = 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
                    # break

if __name__ == "__main__":
    path = r"/Users/liruopeng/Downloads/score/english"
    while 1:
        nID = raw_input("请输入学号中的一部分:")
        find(path,nID)

输出结果:

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

总结

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

 类似资料: