每周的青年大学习在导出名单时,只能看到已学习人员名单,而一个班里好多同学,每次一个一个对照着查看十分麻烦。
所以干脆使用python来处理吧!
首先我们要有一个表格“A班人员名单.xls”作为班级同学花名册。
其次我们要有一个表格“A班团支部青年大学习参与名单.xls”作为已学习同学名单。
实现代码如下:
import xlrd
# xlrd仅支持xls文件,如果不是xls文件,可以从xlsx文件中复制,粘贴到一个新建的xls文件中,不要直接修改后缀名!
# pip install xlrd即可安装
data=xlrd.open_workbook('A班团支部青年大学习参与名单.xls')
#表格与代码放在同一级目录下
# data打开文件
table=data.sheets()[0]
# table读取工作表sheet1
nrows=table.nrows
# nrows获取工作表sheet1的行数
data1=xlrd.open_workbook('A班人员名单.xls')
table1=data1.sheets()[0]
nrows1=table1.nrows
# 双层for循环
for rowx1 in range(2, nrows1):
flag = 0
name1 = table1.cell(rowx1, 0).value
for rowx in range(2,nrows):
name=table.cell(rowx,0).value
flag=0
if name1 == name:
flag=1
break
if(flag==0):
# flag为0,代表name1在循环中,没有在另一个表中找到与之相等的name,说明name1不在学习名单中,输出这位同学的名字name1,然后去催他大学习吧!
print(name1)
常见问题:
有些人使用xlrd操作xls,在if语句判断值是否相等时,发现虽然值相等,但是if语句判断失败,if 语句认为他们两不相等
原因及解决方法:
1、if语句中,==用来判断int,is用来判断string
2、cell的内容,直接输出print(cell),显示为text:“名字”。
但这种无法比较,所以我们在判断相等时,必须获取cell的值,使用 cell.value
获取到真实的值。再比较即可。