zoukankan      html  css  js  c++  java
  • 20201128-4 筛选匹配

    E-1
    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]
        time = row[3]
        number = row[-1]
        # 判断是否迟到
        if time > 45 and number > 3:
            print('{}迟到了{}分钟,迟到了{}次'.format(name, time, number))
            # 将迟到人员信息写入新工作簿的工作表中
            new_ws.append(row)
    
    # 将新工作簿保存为【10月迟到人员信息.xlsx】
    new_wb.save('./material/10月迟到人员信息.xlsx')
    E-2
    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]
        time = row[3]
        number = row[-1]
        # 判断是否迟到
        if time > 45 and number > 3:
            print('{}迟到了{}分钟,迟到了{}次'.format(name, time, number))
            # 将迟到人员信息写入新工作簿的工作表中
            new_ws.append(row)
    
    # 将新工作簿保存为【10月迟到人员信息.xlsx】
    new_wb.save('./material/10月迟到人员信息.xlsx')
    
    第8行创建了一个空的列表late_header用来保存表头数据。
    第10和11行使用for循环遍历出了工作表的第一行(表头),然后将获取到的单元格对象的值(表头的值)存入列表中。
    在之后的任务中,如果你需要获取表头的数据,建议你继续使用这种写法。
    
    使用工作表对象的方法获取从第二行开始的数据,语法是:
    iter_rows(min_row=2, values_only=True)。
    
    第24至26行获取了表格中每一行的姓名,迟到时间和迟到次数三个数据,方便后面使用。
    第29行,使用了字符串格式化输出的知识点,将迟到人员姓名,迟到时间和迟到次数打印在了终端上。
    E-3
    使用相同的数据,即【10月考勤统计.xlsx】,筛选出人力资源部的迟到人员信息,
    将筛选结果打印在终端上然后将迟到人员的信息存储为【人力资源部10月迟到人员信息.xlsx】。
    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')
    E-4
    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))

    第3-5行,第19-21行,使用load_workbook()分别打开了【10月考勤统计.xlsx】和【迟到次数月度统计(10月更新).xlsx】。
    且通过工作簿对象的属性active获取到了活动工作表
    第31行使用了格式化字符串的相关知识,将匹配结果输出在了终端上。

  • 相关阅读:
    ActionBarSherlock学习笔记——知识点
    ActionBarSherlock学习笔记——SubMenu
    Android解析xml——pull
    ActionBarSherlock学习笔记——ShareActionProvider
    Listview下拉刷新(顶部刷新)
    ActionBarSherlock学习笔记——SupportActionBar()属性设置
    ActionBarSherlock学习笔记——ActionBar.Tab
    ActionBarSherlock学习笔记——SearchView
    ActionBarSherlock学习笔记——requestWindowFeature
    ActionBarSherlock学习笔记——ActionBar添加View
  • 原文地址:https://www.cnblogs.com/azxsdcv/p/14053590.html
Copyright © 2011-2022 走看看