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


Posted in Python onMay 26, 2017

最近刚接触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的Twisted框架的核心特性
May 25 Python
Python列出一个文件夹及其子目录的所有文件
Jun 30 Python
用python制作游戏外挂
Jan 04 Python
Pyspider中给爬虫伪造随机请求头的实例
May 07 Python
使用Python和百度语音识别生成视频字幕的实现
Apr 09 Python
新建文件时Pycharm中自动设置头部模板信息的方法
Apr 17 Python
python中JWT用户认证的实现
May 18 Python
Python getattr()函数使用方法代码实例
Aug 10 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
Sep 29 Python
python 基于opencv 实现一个鼠标绘图小程序
Dec 11 Python
Python中生成ndarray实例讲解
Feb 22 Python
pytorch __init__、forward与__call__的用法小结
Feb 27 Python
详解Python3操作Mongodb简明易懂教程
May 25 #Python
python爬虫入门教程--正则表达式完全指南(五)
May 25 #Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
May 25 #Python
Python win32com 操作Exce的l简单方法(必看)
May 25 #Python
python win32 简单操作方法
May 25 #Python
python爬虫入门教程--利用requests构建知乎API(三)
May 25 #Python
Python正则表达式完全指南
May 25 #Python
You might like
解析php通过cookies获取远程网页的指定代码
2013/06/25 PHP
浅析php中抽象类和接口的概念以及区别
2013/06/27 PHP
laravel 5.4 + vue + vux + element的环境搭配过程介绍
2018/04/26 PHP
php-fpm服务启动脚本的方法
2018/04/27 PHP
PHP设计模式入门之迭代器模式原理与实现方法分析
2020/04/26 PHP
关于使用runtimeStyle属性问题讨论文章
2007/03/08 Javascript
javascript 表格排序和表头浮动效果(扩展SortTable)
2009/04/07 Javascript
js中的this关键字详解
2013/09/25 Javascript
jQuery focus和blur事件的应用详解
2014/01/26 Javascript
自写的jQuery异步加载数据添加事件
2014/05/15 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
javascript数据类型验证方法
2015/12/31 Javascript
window.onerror()的用法与实例分析
2016/01/27 Javascript
很棒的js Tab选项卡切换效果
2016/08/30 Javascript
AngularJS过滤器filter用法实例分析
2016/11/04 Javascript
JS实现的简易拖放效果示例
2016/12/29 Javascript
vue slot与传参实例代码讲解
2019/04/28 Javascript
[00:36]TI7不朽珍藏III——斯温不朽展示
2017/07/15 DOTA
Python实现把回车符\r\n转换成\n
2015/04/23 Python
Python中zfill()方法的使用教程
2015/05/20 Python
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
2017/09/28 Python
浅析python中numpy包中的argsort函数的使用
2018/08/30 Python
python得到qq句柄,并显示在前台的方法
2018/10/14 Python
python Dijkstra算法实现最短路径问题的方法
2019/09/19 Python
python图片剪裁代码(图片按四个点坐标剪裁)
2020/03/10 Python
Python面试题:如何用Python来发送邮件
2016/03/15 面试题
鲜果饮品店创业计划书
2014/01/21 职场文书
机工车间主任岗位职责
2014/03/05 职场文书
入党综合考察材料
2014/06/02 职场文书
学校安全防火方案
2014/06/07 职场文书
迎国庆演讲稿
2014/09/15 职场文书
个人自查自纠材料
2014/10/14 职场文书
会计出纳岗位职责
2015/03/31 职场文书
巧用 -webkit-box-reflect 倒影实现各类动效(小结)
2021/04/22 HTML / CSS
用Python生成会跳舞的美女
2022/01/18 Python
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技