多个excel表数据比对操作
本文主要使用两种方法进行比对,分别使用了openpyxl第三方库和pandas第三方库进行数据比对
两种方法优缺点:
openpyxy:
优点:主要是处理xlsx的文件,里面方法简单,易懂
缺点:当数据量大的时候,速度很慢,之前我一条一条数据拿出来比较,两百多条数据花了三个多小时,目前经过优化,速度上得到大幅度提升-约1分钟内,主要是一列一列的数据拿出来做比较,不在一条一条比较,这样速度得到了提升,但是没有之前直接获取某一列某一行的值做比对方便,需要考虑行数和列数!
pandas:
优点:可以处理xls、xlsx等多种文件,且速度很快
缺点:比较难懂,没有openpyxl那样丰富多样化
下面展示代码openpyxy:
class DoExcel_xlsx:def __init__(self,file_name1,sheet_name1,file_name2,sheet_name2):try:self.file_name = file_name1# self.file_name2 = file_name2# self.sheet_name = sheet_name1# self.sheet_name2 = sheet_name2self.workbook = openpyxl.load_workbook(file_name1)self.workbook2 = openpyxl.load_workbook(file_name2)self.sheet = self.workbook[sheet_name1]self.sheet2 = self.workbook2[sheet_name2]except Exception as e:print('case文件格式有误:{}'.format(e))def get_case(self):#创建一个列表,里面存放A列的数据ii1 = []ii2=[]for i in self.sheet['A']:ii1.append(i.value)for i in self.sheet2['A']:ii2.append(i.value)print(ii1)print(ii2)max_row = self.sheet.max_rowmax_row2 = self.sheet2.max_rowx = 1for r in range(2,len(ii1)+1):product_id = self.sheet.cell(row= r, column= 1).value #获取基金代码gzjz = self.sheet.cell(row= r, column= 10)