【python】对⽐excel⽂件某⼀列数据python对⽐excel某⼀列数据
使⽤场景
场景:
⽤于对⽐表格1和表格2 某⼀列中存在不同的数据。
举例:
表格a :有司机1和2
表格b :有司机2和3
⼯具执⾏后返回 司机 1和3
使⽤⽅法:【备注:暂时只⽀持xlsx格式】
1、将两个表格导⼊⼯具⽬录下
2、执⾏py⽂件,输⼊第⼀个⽂件名,如“filename.xlsx”
3、回车后,继续输⼊第⼆个⽂件名
4、回车后,输⼊需要⽐较的那⼀列数据的titlename,如“司机姓名”
__author__ ='dxj'
data ="2022/1/24 11:05"
from openpyxl import load_workbookpython怎么读取excel文件数据
from ptions import InvalidFileException
class ReadExcel:# 读取Excel⾥⾯的内容
def__init__(self, file_name, sheet_name):
self.file_name = file_name
self.sheet_name = sheet_name
def get_title(self):# 读取Excel⾥⾯的title数据
wb = load_workbook(self.file_name)# 打开Excel⼯作簿
sheet1 = wb[self.sheet_name]
title =[]# 定义⼀个空列表,将读取的title字段进⾏存储
for i in range(1, sheet1.max_column+1):
title.ll(1, i).value)
return title
def do_excel(self):
wb = load_workbook(self.file_name)
sheet1 = wb[self.sheet_name]
title = _title()# 调⽤title内容
all_data =[]
for j in range(2, sheet1.max_row+1):# 获取最⼤⾏数,加⼊循环
row_data ={}
for i in range(1, sheet1.max_column+1):# 获取最⼤列数,进⾏嵌套循环
row_data[title[i-1]]= ll(j, i).value # 把拿到的数据进⾏字典的键对值匹配
all_data.append(row_data)
return all_data
class comparison:
"""⽐对⽂件"""
def get_filename1(self,filename):
try:
result = ReadExcel(filename,'Sheet1').do_excel()
return result
except InvalidFileException as e:
print("未获取⽂件的数据,请检查⽂件名称")
return False
def comparison(self,filename1,filename2,liename):
"""⽐对⽂件,排除不⼀样的⼀列数据的值"""
"""⽐对⽂件,排除不⼀样的⼀列数据的值"""
X = _filename1(filename1)
Y = _filename1(filename2)
if X or Y :
#获取两个表格的⼀列数据
X_lie =[]
for i in range(len(X)):
X_lie.append(X[i]['%s'%liename])
Y_lie =[]
for i in range(len(Y)):
Y_lie.append(Y[i]['%s'%liename])
diff_data =[]
#从A去对⽐B
length =len(X)
for m in range(length):
if X_lie[m]not in Y_lie and X_lie[m]is not None:
diff_data.append(X_lie[m])
#从B去对⽐A
length2 =len(Y)
for m in range(length2):
if Y_lie[m]not in X_lie and Y_lie[m]is not None:
diff_data.append(Y_lie[m])
#也可以使⽤集合对⽐不同
#diff_data = set(X_lie)^set(Y_lie)
return diff_data
if __name__ =="__main__":
import os
arg1 =input("请输⼊第⼀个⽂件名称(包括格式如“.xlsx”):")
arg2 =input("请输⼊第⼆个⽂件名称(包括格式如“.xlsx”):")
arg3 =input("请输⼊对⽐哪⼀列,(⽐如“司机姓名”):")
filename1 = os.path.dirname(__file__)+os.path.join('\\%s')%arg1 filename2 = os.path.dirname(__file__)+os.path.join('\\%s')%arg2 print(comparison()parison(filename1,filename2,'%s'%arg3)) input()
exit()
运⾏⽂件截图test.xlsx、test3.xlsx如下:
运⾏结果:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论