美文网首页
python小demo,使用openpyxl 对两个exl表进行

python小demo,使用openpyxl 对两个exl表进行

作者: zlin_ | 来源:发表于2019-01-21 00:44 被阅读0次

            朋友找我,说他们领导让他写个脚本,给两个表,取表A和表B的userid进行对比,有重复的就把表A那一行userid相关数据给删除。然后他给了我一包中南海让我帮忙。我才不是看中这包烟才帮他忙的。。。。

    上代码:

    #!/usr/bin/env.python

    #_*_coding:utf-8_*_

    from openpyxl import workbook

    from openpyxl import load_workbook

    import time

    def get_userid(file_path, col):

    """

        :param file_path:传入文件路径

        :return: 将指定列以列表类型返回

    """

        exl1 = load_workbook(file_path)

        sheet = exl1.get_active_sheet()

        userid = []

        for cell in sheet[col]:

            if cell.value !='userid':

                userid.append(cell.value)

      return userid

    def register():

    '''

        计算重复数据条数

        :return: 返回遍历次数'''

        list1 = get_userid(exl1_path, col='B')

        list2 = get_userid(exl2_path, col='B')

        count =0

        for valuein list1:

            if value in list2:

                count +=1

        return count

    if __name__ =='__main__':

        exl1_path ='文件路径'

        exl2_path ='文件路径'

        list1 = get_userid(exl1_path, col='B')

        list2 = get_userid(exl2_path, col='B')

        count = register()

        exl = load_workbook(exl1_path)

        wb = exl.active

      if count !=0:

        start_time = time.time()

    # 第一层循环,遍历次数

            for i in range(count):

    # 第二层循环,获取值和索引

                for index, value in enumerate(get_userid(exl1_path, col='B')):

    #判断是否重复,如果重复就把对应行删除,跳出循环,将index置0(如果不跳出循环,列表的index会继续累加下去,这样会导致index和表格的数据索引对应不上,删错数据)

                    if value in list2:

                        wb.delete_rows(index +2, 1)

                        index =0

                        exl.save(exl1_path)

                        break

           end_time = time.time()

           use_time = time.time() - start_time

           print('耗时{0:.2f}秒'.format(float(use_time)))

           print('总共{}条数据'.format(len(list1)))

           print('重复数据有{}条'.format(count))

      else:

            print("没有重复数据!")

    望python大佬多多指教~~~

    相关文章

      网友评论

          本文标题:python小demo,使用openpyxl 对两个exl表进行

          本文链接:https://www.haomeiwen.com/subject/jlhqjqtx.html