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中模拟enum枚举类型的5种方法分享
Nov 22 Python
Python将xml和xsl转换为html的方法
Mar 10 Python
Python生成随机数组的方法小结
Apr 15 Python
PyCharm在新窗口打开项目的方法
Jan 17 Python
python实现连连看辅助(图像识别)
Mar 25 Python
python实现拼图小游戏
Feb 22 Python
利用python实现凯撒密码加解密功能
Mar 31 Python
Pygame的程序开始示例代码
May 07 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
May 15 Python
详解Python 循环嵌套
Jul 09 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
Nov 24 Python
Python用requests库爬取返回为空的解决办法
Feb 21 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之第十天
2006/10/09 PHP
六酷社区论坛HOME页清新格调免费版 下载
2007/03/07 PHP
php cli 方式 在crotab中运行解决
2010/02/08 PHP
54个提高PHP程序运行效率的方法
2015/07/19 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
Uglifyjs(JS代码优化工具)入门 安装使用
2020/04/13 Javascript
关于JavaScript中name的意义冲突示例介绍
2014/05/29 Javascript
AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
2015/01/02 Javascript
jQuery插件animateSlide制作多点滑动幻灯片
2015/06/11 Javascript
JS仿淘宝实现的简单滑动门效果代码
2015/10/14 Javascript
Bootstrap布局方式详解
2016/05/27 Javascript
微信小程序 教程之注册页面
2016/10/17 Javascript
vuejs通过filterBy、orderBy实现搜索筛选、降序排序数据
2020/10/26 Javascript
Vue学习之路之登录注册实例代码
2017/07/06 Javascript
vuex进阶知识点巩固
2018/05/20 Javascript
JavaScript实现与使用发布/订阅模式详解
2019/01/19 Javascript
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
2019/06/18 jQuery
微信小程序返回上一级页面的实现代码
2020/06/19 Javascript
Python构造函数及解构函数介绍
2015/02/26 Python
python类和函数中使用静态变量的方法
2015/05/09 Python
python常见的格式化输出小结
2016/12/15 Python
更改Ubuntu默认python版本的两种方法python-> Anaconda
2016/12/18 Python
python+opencv实现的简单人脸识别代码示例
2017/11/14 Python
利用numpy和pandas处理csv文件中的时间方法
2018/04/19 Python
Python中的类与类型示例详解
2019/07/10 Python
python爬虫爬取幽默笑话网站
2019/10/24 Python
Ariat官网:美国马靴和服装品牌
2019/12/16 全球购物
建筑项目策划书
2014/01/13 职场文书
奥巴马胜选演讲稿
2014/05/15 职场文书
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
2015年端午节活动总结
2015/02/11 职场文书
监理中标通知书
2015/04/16 职场文书
2015年社区党务工作总结
2015/04/21 职场文书
javascript Number 与 Math对象的介绍
2021/11/17 Javascript
MySql数据库 查询时间序列间隔
2022/05/11 MySQL