最近 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 サイトの他の関連記事を参照してください。