ホームページ >バックエンド開発 >Python チュートリアル >2 つのスプレッドシート内のデータの相違点をすばやく見つける

2 つのスプレッドシート内のデータの相違点をすばやく見つける

大家讲道理
大家讲道理オリジナル
2017-05-28 10:05:152414ブラウズ

最近 Python に触れたばかりで、スキルを練習するための小さなタスクを探しています。実践で問題解決能力を発揮し続けられることを願っています。

会社にはそのようなシナリオがあります。2 つ、3 つ以上の部門で使用されるスプレッドシートがあり、これらの従業員はこれらのテーブルを維持しながら、自分の部門のデータの一部を随時更新します。それは経営にとって非常に不利です。 2 つ以上のスプレッドシート内のデータの違いを素早く見つけるにはどうすればよいでしょうか?

解決策:

1. Excel 付属の方法 (興味がある方は自分で Baidu を使ってください)

2. Python で小さなスクリプトを書きます


 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3  4 #导入模块 openpyxl   5 import openpyxl 6 from openpyxl.styles import PatternFill 7 from openpyxl.styles import colors 8 from openpyxl.styles import Font, Color 9 10 #读取excel文件11 #括号中的字符串为你要比较的两个excel的路径,注意用“/”12 wb_a = openpyxl.load_workbook('d:/BAKFILE/d046532/Desktop/check excel/test.xlsx')13 wb_b = openpyxl.load_workbook('d:/BAKFILE/d046532/Desktop/check excel/test2.xlsx')14 #定义一个方法来获取表格中某一列的内容,返回一个列表15 #在这里,我的表格中:IP是具有唯一性的,所以我用它来区分数据的差异,而IP这一列在我的表格中是第“G”列16 def getIP(wb):17     sheet = wb.get_active_sheet()18     ip = []19     for cellobj in sheet['G']:20         ip.append(cellobj.value)21 22     return ip23 #获得ip列表24 ip_a = getIP(wb_a)25 ip_b = getIP(wb_b)26 #将两个列表转换成集合27 aa = set(ip_a)28 bb = set(ip_b)29 #找出两个列表的不同行,并转换成列表30 difference = list(aa ^ bb)31 #打印出列表中的元素32 #到这一步,两个表格中不同的数据已经被找出来了33 for i in difference:34     print (i)35 36 #将不同行高亮显示37 print ("开始第一张表" + "----" *10)38 a = wb_a.get_active_sheet()['G']39 for cellobj in a:40     if cellobj.value in difference:41         print (cellobj.value)42         cellobj.font = Font(color=colors.BLACK, italic=True ,bold = True)43         cellobj.fill = PatternFill("solid", fgColor="DDDDDD")44 print ("开始第二张表" + "----" *10)45 b = wb_b.get_active_sheet()['G']46 for cellobj in b:47     if cellobj.value in difference:48         print (cellobj.value)49         cellobj.font = Font(color=colors.BLACK, italic=True ,bold = True)50         cellobj.fill = PatternFill("solid", fgColor="DDDDDD")51 52 wb_a.save('d:/BAKFILE/d046532/Desktop/a.xlsx')53 wb_b.save('d:/BAKFILE/d046532/Desktop/b.xlsx')

このようにして、Excel の 2 つのコピーが作成されます。保存して、コピーのセルの塗りつぶしの色とフォントの色を使用して、2 つのテーブルの異なるデータの違いをマークします

未解決:

1. これらの異なるデータを 1 つのテーブルに追加して完全なテーブルを形成する方法

2 .コードを最適化して合理化する方法

以上が2 つのスプレッドシート内のデータの相違点をすばやく見つけるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。