我有一个记录学生信息的 Excel 表格,我想通过学生的姓名或者学号查询学生的信息。
学生信息如下
姓名 | 学号 | 性别 | 年龄 | 身份证号码 | 期末总成绩 |
张三 | HY1231 | 男 | 18 | 12345678900 | 98 |
李四 | HY1232 | 男 | 18 | 52364178932 | 95 |
王二 | HY1233 | 男 | 17 | 25413629078 | 87 |
小明 | HY1234 | 男 | 18 | 85697412301 | 76 |
小张 | HY1235 | 男 | 17 | 58321469710 | 85 |
文件名称:info.xlsx
该示例将使用到第三方的库,所以需要先使用 pip 安装第三方的库:
C:\Users\Administrator>pip install xlrdCollecting xlrd Downloading xlrd-1.2.0-py2.py3-none-any.whl (103 kB) |████████████████████████████████| 103 kB 43 kB/sInstalling collected packages: xlrdSuccessfully installed xlrd-1.2.0
代码如下:
import xlrdfile = "info.xlsx"name = input("Pleas enter name:")workbook = xlrd.open_workbook(file)Table = workbook.sheet_by_name("Sheet1")# Table = workbook.sheet_by_index(0)length = Table.nrowsfor i in range(length): row = Table.row_values(i) if name in row[0]: print(row[0:6])
代码说明
import xlrd
导入第三方库,对于 Excel 的操作,我们需要使用到第三方的库,Python 中对于 Excel 的操作,主要用到两个模块,xlrd 和 xlwt,xlrd 用于读取 Excel 内容,xlwt 用于写入内容到 Excel 中。
file = "info.xlsx"name = input("Pleas enter name:")
为了方便,我们习惯将对象赋予给一个变量,方便以后使用。在以后使用时,只需要输入变量名就可以了。我这里的文件,只写了文件名,因为我把 Excel 文件,和 Python 文件放在同一个路径上了,如果你的 Excel 文件和 Python 不在同一个目录,你需要在赋值时加上具体的路径。
name,是你查询的对象,你将通过 name 查询 name 对应的信息。input() 用于接受用户的输入。
workbook = xlrd.open_workbook(file)Table = workbook.sheet_by_name("Sheet1")# Table = workbook.sheet_by_index(0)
使用 xlrd.open_workbook() 打开 Excel 文件,并将它赋值给 workbook.
使用 .sheet_by_name() 获取 Excel 文件中的表格内容,在括号中指定表格名称。一个 Excel 中可以有多个表格。表格名称在 Excel 文件的左下方。
你也可以使用 .sheet_by_index() 通过索引的方式获取表格内容
length = Table.nrowsfor i in range(length): row = Table.row_values(i) if name in row[0]: print(row[0:6])
使用 .nrows 获取表格的行数,并赋值给 length,你也可以使用 .ncols 获取列的数量。
使用 for 循环每一行。
通过 if 判断,如果你输入的 name 在某一行中,那么就打印这一行的的内容。
遍历每一行的内容,会将每作为一个列表赋值给 row,所以判断的时候,使用了 row[0],0 表示 name 的索引。
然后我们通过对该列表切片,获取我们想要的内容,我们想要的是整个一行,所以使用了 row[0:6],其实这里也可以使用 print(row)。
这是该代码的结果:
"C:\Program Files\Python38\python.exe" C:/Test/Excel.pyPleas enter name:李四['李四', 'HY1232', '男', 18.0, 52364178932.0, 95.0]Process finished with exit code 0
这是我在 PyCharm 中运行的结果。
☆ END ☆