python 如何快速找出两个电子表中数据的差异

 更新时间:2017年05月26日 08:14:43   投稿:jingxian  
下面小编就为大家带来一篇python 如何快速找出两个电子表中数据的差异。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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

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

解决办法:

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

2. python 写一个小脚本

#!/usr/bin/env python
# -*- coding: utf-8 -*-

#导入模块 openpyxl 
import openpyxl
from openpyxl.styles import PatternFill
from openpyxl.styles import colors
from openpyxl.styles import Font, Color

#读取excel文件
#括号中的字符串为你要比较的两个excel的路径,注意用“/”
wb_a = openpyxl.load_workbook('d:/BAKFILE/d046532/Desktop/check excel/test.xlsx')
wb_b = openpyxl.load_workbook('d:/BAKFILE/d046532/Desktop/check excel/test2.xlsx')
#定义一个方法来获取表格中某一列的内容,返回一个列表
#在这里,我的表格中:IP是具有唯一性的,所以我用它来区分数据的差异,而IP这一列在我的表格中是第“G”列
def getIP(wb):
  sheet = wb.get_active_sheet()
  ip = []
  for cellobj in sheet['G']:
    ip.append(cellobj.value)

  return ip
#获得ip列表
ip_a = getIP(wb_a)
ip_b = getIP(wb_b)
#将两个列表转换成集合
aa = set(ip_a)
bb = set(ip_b)
#找出两个列表的不同行,并转换成列表
difference = list(aa ^ bb)
#打印出列表中的元素
#到这一步,两个表格中不同的数据已经被找出来了
for i in difference:
  print (i)

#将不同行高亮显示
print ("开始第一张表" + "----" *10)
a = wb_a.get_active_sheet()['G']
for cellobj in a:
  if cellobj.value in difference:
    print (cellobj.value)
    cellobj.font = Font(color=colors.BLACK, italic=True ,bold = True)
    cellobj.fill = PatternFill("solid", fgColor="DDDDDD")
print ("开始第二张表" + "----" *10)
b = wb_b.get_active_sheet()['G']
for cellobj in b:
  if cellobj.value in difference:
    print (cellobj.value)
    cellobj.font = Font(color=colors.BLACK, italic=True ,bold = True)
    cellobj.fill = PatternFill("solid", fgColor="DDDDDD")

wb_a.save('d:/BAKFILE/d046532/Desktop/a.xlsx')
wb_b.save('d:/BAKFILE/d046532/Desktop/b.xlsx')

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

未解决:

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

2. 怎么优化精简代码

以上这篇python 如何快速找出两个电子表中数据的差异就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解python 注释、变量、类型

    详解python 注释、变量、类型

    本文通过实例代码较详细的给大家介绍了python 注释、变量、类型的相关操作及实现代码,感兴趣的朋友跟随脚本之家小编一起看看吧
    2018-08-08
  • Python去除字符串中的标点符号的最优方式

    Python去除字符串中的标点符号的最优方式

    在Python编程中,去除字符串标点符号是一项常见任务,关键在于文本分析和数据清洗,Python提供了多种方法,包括使用str.replace()、str.translate()结合str.maketrans(),以及使用正则表达式,另外,可以利用string模块中的punctuation属性快速实现
    2024-09-09
  • Django 拼接两个queryset 或是两个不可以相加的对象实例

    Django 拼接两个queryset 或是两个不可以相加的对象实例

    这篇文章主要介绍了Django 拼接两个queryset 或是两个不可以相加的对象实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • pytorch和numpy默认浮点类型位数详解

    pytorch和numpy默认浮点类型位数详解

    这篇文章主要介绍了pytorch和numpy默认浮点类型位数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • caffe的python接口绘制loss和accuracy曲线

    caffe的python接口绘制loss和accuracy曲线

    这篇文章主要为大家介绍了caffe的python接口绘制loss和accuracy曲线示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Python使用sqlite3第三方库读写SQLite数据库的方法步骤

    Python使用sqlite3第三方库读写SQLite数据库的方法步骤

    数据库非常重要,程序的数据增删改查需要数据库支持,python处理数据库非常简单,而且不同类型的数据库处理逻辑方式大同小异,下面这篇文章主要给大家介绍了关于Python使用sqlite3第三方库读写SQLite数据库的方法步骤,需要的朋友可以参考下
    2022-07-07
  • Django Sitemap 站点地图的实现方法

    Django Sitemap 站点地图的实现方法

    这篇文章主要介绍了Django Sitemap 站点地图的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • PyQt5图形界面播放音乐的实例

    PyQt5图形界面播放音乐的实例

    今天小编就为大家分享一篇PyQt5图形界面播放音乐的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • 在Python中实现函数重载的示例代码

    在Python中实现函数重载的示例代码

    这篇文章主要介绍了在Python中实现函数重载的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • python中selenium库的基本使用详解

    python中selenium库的基本使用详解

    这篇文章主要介绍了python中selenium库的基本使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07

最新评论