Maison  >  Article  >  développement back-end  >  Une introduction à la façon dont Python peut trouver rapidement la différence entre les données de deux feuilles de calcul

Une introduction à la façon dont Python peut trouver rapidement la différence entre les données de deux feuilles de calcul

黄舟
黄舟original
2017-05-28 11:15:212073parcourir

L'éditeur ci-dessous vous proposera un article python sur la façon de trouver rapidement la différence de données dans deux feuilles de calcul. L'éditeur pense que c'est plutôt bien, alors je vais le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur et jetons un coup d'œil.

Je viens d'entrer en contact avec python récemment. Je recherche quelques petites tâches pour mettre en pratique mes compétences. J'espère pouvoir continuer à exercer ma capacité à résoudre des problèmes. en pratique.

Il y aura un tel scénario dans l'entreprise : il existe un formulaire électronique qui est utilisé par deux, trois départements ou plus. Ces employés maintiendront ces formulaires de temps en temps. en mettant à jour certaines données de votre propre service, avec le temps, les données de chacun vont commencer à se battre, ce qui est très préjudiciable à la direction. Comment trouver rapidement les différences de données dans deux ou plusieurs feuilles de calcul ?

Solution :

1. La méthode fournie avec Excel (si vous êtes intéressé, utilisez Baidu par vous-même. )

2. Écrivez un petit script en 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')

De cette façon, deux copies d'Excel sera enregistrée et cette copie utilise la couleur de remplissage des cellules et la couleur de la police pour marquer les différentes différences de données dans les deux tableaux

Non résolu :

1. Comment ajouter ces différentes données dans un seul tableau pour former un tableau complet

Comment optimiser et rationaliser le code

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn