根据实际需要输出筛选结果,或将筛选结果保存起来。总结起来可以分为三类:
① 将筛选的结果存入学过的数据结构里,比如:列表,元组或字典。
② 将筛选的结果存入文件中。
③ 将筛选的结果打印出来。
例一
from openpyxl import load_workbook, Workbook
打开【10月考勤统计.xlsx】工作簿
wb = load_workbook('./material/10月考勤统计.xlsx')
获取活动工作表
ws = wb.active
获取表头
late_header = []
for cell in ws[1]:
late_header.append(cell.value)
新建工作簿
new_wb = Workbook()
获取新工作簿中的工作表
new_ws = new_wb.active
将表头写入新工作簿的工作表中
new_ws.append(late_header)
从第二行开始遍历表格
for row in ws.iter_rows(min_row=2, values_only=True):
# 取出姓名,部门,迟到时间和迟到次数
name = row[1]
department = row[2]
time = row[3]
number = row[-1]
# 判断是否迟到
if department == '人力资源部' and time > 45 and number > 3:
print('人力资源部的{}迟到了{}分钟,迟到了{}次'.format(name, time, number))
# 将迟到人员信息写入新工作簿的工作表中
new_ws.append(row)
将新工作簿保存为【10月迟到人员信息.xlsx】
new_wb.save('./material/人力资源部10月迟到人员信息.xlsx')
例二
from openpyxl import load_workbook
打开工作簿【10月考勤统计.xlsx】,获取活动工作表
wb = load_workbook('./material/10月考勤统计.xlsx')
ws = wb.active
创建迟到人员字典
info_dict = {}
循环读取除表头外的表格数据
for row in ws.iter_rows(min_row=2, values_only=True):
# 取出员工工号
staff_id = row[0]
# 取出迟到次数
staff_late = row[-1]
# 将信息添加入字典,字典格式为{'员工工号': '迟到次数'}
info_dict[staff_id] = staff_late
打开工作簿【迟到次数月度统计(10月更新).xlsx】,获取活动工作表
monthly_wb = load_workbook('./material/迟到次数月度统计(10月更新).xlsx')
monthly_ws = monthly_wb.active
循环读取出表头外的表格数据
for monthly_row in monthly_ws.iter_rows(min_row=3, max_col=13, values_only=True):
# 取出员工工号
member_id = monthly_row[0]
# 取出十月份的迟到次数
member_late = monthly_row[-1]
# 匹配迟到次数是否相等
if member_late != info_dict[member_id]:
print('工号{}迟到情况不匹配,请核查后更新'.format(member_id))
通过案例的讲解,相信你对数据匹配的场景已经有了初步的认识,那么怎么在以后的工作中应该如何识别出这种场景并解决筛选问题呢,我们现在来总结一下。
两张表中存在有关联的数据,需要我们根据关联将两张表中的数据连接起来,这时候就需要对表格中的数据进行匹配操作。
具体的操作步骤还是可以按照获取数据,使用数据和数据输出来总结:
首先是获取数据,使用上节课学习过的表格读写的相关知识,根据任务需求,确定要获取的是零散的单元格,是单行/单列,还是多行/多列的数据。
接下来就是关键部分使用数据,匹配逻辑在此实现。
先要明确表格之间的关联关系,然后将获取到的某一表格中的数据,按照需要存储起来(推荐使用字典,把可以连接表格的数据作为键,要匹配的数据作为值)。
再将另一个表格中要匹配的值与字典中对应的值关联起来,实现匹配逻辑。
最后是数据输出部分。还是要结合任务需求,确定任务是要我们将结果写入表中还是将结果打印在终端上,前面讲过了,这里就不再赘述。
网友评论