zoukankan      html  css  js  c++  java
  • python——快速找出两个电子表中数据的差异

      最近刚接触python,找点小任务来练练手,希望自己在实践中不断的锻炼自己解决问题的能力。

      公司里会有这样的场景:有一张电子表格的内容由两三个部门或者更多的部门用到,这些员工会在维护这些表格中不定期的跟新一些自己部门的数据,时间久了,大家的数据就开始打架了,非常不利于管理。怎样快速找到两个或者多个电子表格中数据的差异呢?

      解决办法:

          1.Excel自带的方法(有兴趣的自行百度)

          2.python 写一个小脚本

      

     1 #!/usr/bin/env python
     2 # -*- coding: utf-8 -*-
     3 
     4 #导入模块 openpyxl  
     5 import openpyxl
     6 from openpyxl.styles import PatternFill
     7 from openpyxl.styles import colors
     8 from openpyxl.styles import Font, Color
     9 
    10 #读取excel文件
    11 #括号中的字符串为你要比较的两个excel的路径,注意用“/”
    12 wb_a = openpyxl.load_workbook('d:/test.xlsx')
    13 wb_b = openpyxl.load_workbook('d:/test2.xlsx')
    14 #定义一个方法来获取表格中某一列的内容,返回一个列表
    15 #在这里,我的表格中:IP是具有唯一性的,所以我用它来区分数据的差异,而IP这一列在我的表格中是第“G”列
    16 def getIP(wb):
    17     sheet = wb.get_active_sheet()
    18     ip = []
    19     for cellobj in sheet['G']:
    20         ip.append(cellobj.value)
    21 
    22     return ip
    23 #获得ip列表
    24 ip_a = getIP(wb_a)
    25 ip_b = getIP(wb_b)
    26 #将两个列表转换成集合
    27 aa = set(ip_a)
    28 bb = set(ip_b)
    29 #找出两个列表的不同行,并转换成列表
    30 difference = list(aa ^ bb)
    31 #打印出列表中的元素
    32 #到这一步,两个表格中不同的数据已经被找出来了
    33 for i in difference:
    34     print (i)
    35 
    36 #将不同行高亮显示
    37 print ("开始第一张表" + "----" *10)
    38 a = wb_a.get_active_sheet()['G']
    39 for cellobj in a:
    40     if cellobj.value in difference:
    41         print (cellobj.value)
    42         cellobj.font = Font(color=colors.BLACK, italic=True ,bold = True)
    43         cellobj.fill = PatternFill("solid", fgColor="DDDDDD")
    44 print ("开始第二张表" + "----" *10)
    45 b = wb_b.get_active_sheet()['G']
    46 for cellobj in b:
    47     if cellobj.value in difference:
    48         print (cellobj.value)
    49         cellobj.font = Font(color=colors.BLACK, italic=True ,bold = True)
    50         cellobj.fill = PatternFill("solid", fgColor="DDDDDD")
    51 
    52 wb_a.save('d:/a.xlsx')
    53 wb_b.save('d:/b.xlsx')

    这样,就会保存两个excel的副本,并在这个副本中用单元格填充色和字体颜色标注出两个表格中不同的数据差异

    未解决:

          1.怎样将这些有差异的数据补充到一张表里,形成一个全集表

          2.怎么优化精简代码

    作者:最后一个亮亮 出处: https://www.cnblogs.com/swim/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如果觉得还有帮助的话,可以点一下右下角的【推荐】
  • 相关阅读:
    HttpModule & HttpHandler
    试图运行项目时出错:无法启动调试 没有正确安装调试器
    DataTable 手动排序 无效的问题解决方法??
    合并多个DLL文件
    恢复mysql方法
    在不同版本的IIS下使用ASP.NET MVC
    Enterprise Library 4.1 October 2008
    去除HTML标记
    Mac相关命令
    Mac常用快捷键
  • 原文地址:https://www.cnblogs.com/swim/p/6906468.html
Copyright © 2011-2022 走看看