表格:每个Excel文件本质上都是一个表格的集合,一个Excel文件中可以有多个表格。Excel文件和表格的关系,类似浏览器和标签页的关系。Excel文件中,你可以点击底部的表格名称来切换表格。
单元格:表格中的一个小格子叫“单元格”。每一个单元格对应一个坐标,横轴的坐标是英文字母,纵轴的坐标是数字(也就是行号)。所以“A1”就是左上角的那个单元格,“C3”就是第三列、第三行的单元格。
上面的脚本中,我们打印出了Excel文件中Sheet1表格的左上角的单元格的内容。
运行这个Python脚本(代码较少的Python项目,我们称之为脚本),终端打印了文字“员工姓名”:
$ py parse_excel.py
员工姓名
获取全部员工工资信息
通过上面的脚本,我们成功获得了一个单元格的内容。为了获得全部员工的信息,我们实际上是要获得以“A2-E2-E4-A4”四个单元格为角的矩形内部的所有单元格的内容。
自然地,我们会直接想到用for循环遍历的形式获取所有单元格内容,像这样:
for row in [2, 3, 4]:
print("\n员工工资信息:")
for col in ['A', 'B', 'C', 'D', 'E']:
print(sheet[col + str(row)].value)
其中第二行print的字符串中“\n”是代表换行的意思,以便让每个员工信息之间有一个空行,这样看起来更直观。
运行这段代码,确实能够得到我们期望的输出结果:
员工工资信息:
张三
3276131224@gmail.com
3500
500
4000
员工工资信息:
李四
lovethisworld@hotmail.com
4000
200
4200
员工工资信息:
王二麻子
loveandpeace@facebook.com
2570
400
2970
不过这段代码只能用于员工数量很少的情况,因为我们使用了[2,3,4]这样的固定数组来遍历员工,如果员工有1000人,单写这个数组就会花很长时间。那么如何支持大量员工的情况呢?我们可以用下面代码来代替这个固定数组。
range(2,5)
range是一个Python的内置函数,它可以生成一个可迭代对象,让for循环逐个获取它提供的数字。通俗一点说,就是for循环每执行一次内部代码,都会先从range函数要一个数字,直到range函数没有数字可提供了,for循环就结束了。
以上面这个代码为例,range(2, 5)会依次给for循环提供2,3,4,然后就结束了。注意,不提供5。也就是range提供的数字从第一个参数开始,每次加一,一直提供到第二个参数减一。(用数学化的语言来说,range就是一个区间,两个参数表示的是一个前闭后开的区间。)
这样修改之后,无论有多少员工,我们的代码都能够支持了。
for row in range(2, 5):
print("\n员工工资信息:")
for col in ['A', 'B', 'C', 'D', 'E']:
print(sheet[col + str(row)].value)