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中的多重继承
Apr 28 Python
启动targetcli时遇到错误解决办法
Oct 26 Python
python实现求最长回文子串长度
Jan 22 Python
Python实现的直接插入排序算法示例
Apr 29 Python
django用户登录和注销的实现方法
Jul 16 Python
Python Requests库基本用法示例
Aug 20 Python
python实现大转盘抽奖效果
Jan 22 Python
opencv中图像叠加/图像融合/按位操作的实现
Apr 01 Python
Python requests模块cookie实例解析
Apr 14 Python
python3 循环读取excel文件并写入json操作
Jul 14 Python
Python局部变量与全局变量区别原理解析
Jul 14 Python
Django ModelForm组件原理及用法详解
Oct 12 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
PHP5中Cookie与 Session使用详解
2013/04/30 PHP
PHP实现远程下载文件到本地
2015/05/17 PHP
深入理解PHP中的count函数
2016/05/31 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
20个非常棒的Jquery实用工具 国外文章
2010/01/01 Javascript
jQuery.getScript加载同域JS的代码
2012/02/13 Javascript
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
JS获取Table中td值的方法
2015/03/19 Javascript
Backbone.js框架中简单的View视图编写学习笔记
2016/02/14 Javascript
js HTML5手机刮刮乐代码
2020/09/29 Javascript
JS遍历对象属性的方法示例
2017/01/10 Javascript
JS实现的简单表单验证功能完整实例
2017/10/14 Javascript
JavaScript 五大常见函数
2018/03/23 Javascript
详解node Async/Await 更好的异步编程解决方案
2018/05/10 Javascript
微信小程序实现日历功能
2018/11/27 Javascript
vue实现微信浏览器左上角返回按钮拦截功能
2020/01/18 Javascript
你不知道的 TypeScript 高级类型(小结)
2020/08/28 Javascript
Python 字符串定义
2009/09/25 Python
Python多线程编程(五):死锁的形成
2015/04/05 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
2018/04/26 Python
Python异常模块traceback用法实例分析
2019/10/22 Python
python读取tif图片时保留其16bit的编码格式实例
2020/01/13 Python
解决TensorFlow模型恢复报错的问题
2020/02/06 Python
HTML5安全介绍之内容安全策略(CSP)简介
2012/07/10 HTML / CSS
【HTML5】3D模型--百行代码实现旋转立体魔方实例
2016/12/16 HTML / CSS
使用phonegap查找联系人的实现方法
2017/03/31 HTML / CSS
Amcal中文官网:澳洲综合性连锁药房
2019/03/28 全球购物
统计每一学生的平均成绩
2014/06/06 面试题
某同学的自我鉴定范文
2013/12/26 职场文书
设计师个人求职信范文
2014/02/02 职场文书
银行职员自我鉴定
2014/04/20 职场文书
六一儿童节演讲稿
2014/05/23 职场文书
浅谈MySQL 亿级数据分页的优化
2021/06/15 MySQL
CSS 一行代码实现头像与国旗的融合
2021/10/24 HTML / CSS
Win11运行育碧游戏总是崩溃怎么办 win11玩育碧游戏出现性能崩溃的解决办法
2022/04/06 数码科技