首頁  >  文章  >  後端開發  >  python如何快速的找出兩個電子表中資料的差異的方法介紹

python如何快速的找出兩個電子表中資料的差異的方法介紹

黄舟
黄舟原創
2017-05-28 11:15:212074瀏覽

下面小編就為大家帶來一篇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如何快速的找出兩個電子表中資料的差異的方法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn