需求分析
近期需要一个脚本将录入员录入的两个Excel文件进行比对,检查二者录入的内容是否相同,将有错的内容以log日志的方式输出到.txt文件中,输出的内容是“文件1的路径”+“文件2的路径”+“哪个sheet表”+“第几列出问题”。这样方便人员进行确认并重新找出进行检查。
根据这样的需求,首先确定了所使用的工具和程序编写架构:
读取Excel表的数据:使用Python中的Panda库,其中的函数可以很方便的读取出所需要的数据。
程序框架
1.首先实现指定两个文件名的Excel表的指定列的数据读出并比对,按照需求设计输出log日志;
2.其次实现指定两个文件名的Excel表的不同Sheet表中指定列的数据读出并比对,按照要求输出log日志;
3.到这步就已经完成对两个文件的所有数据的比对了,接着把程序封装成函数,编写批处理程序;
4.给定对比的两个文件夹目录,挑出所有.xlsx文件放到列表中,用for循环一个一个打开再调用上一个函数进行比对,输出结果。
5.将其打包封装为.exe可执行文件,这样可以方便团队其他的小伙伴再没装Python或者panda包的情况下也可以利用这个脚本进行对比。
代码实现
对比两个Excel表的异同:
代码如下:
# 对比一个sheet的值是否正确
def compareSheet(file1, file2, wavelist1):
'''
该函数对比同一个sheet表中的数据是否正确
:param file1:
:param file2:
:param sheetName:
:return:
'''
sheet = pd.read_excel(wavelist1[0], sheet_name=None) # 打开一次获取sheet
sheet_names = list(sheet.keys()) # 获取sheet名称
flag = len(sheet_names) # 计算长度
# print("sheet_names:",sheet_names)
k = 0 # 控制sheet移动
if k < flag:
sheetName = sheet_names[k]
data1 = pd.read_excel(file1, sheet_name=sheetName, usecols=[1])
data1 = data1.values
# print("打开",file1,"成功")
data2 = pd.read_excel(file2, sheet_name=sheetName, usecols=[1])
data2 = data2.values
k = k + 1
# print("打开", file2, "成功")
# print("表1的值",data1)
# print("表2的值",data2)
len1 = len(data1)
len2 = len(data2)
if len1 == len2:
for i in range(len1):
test1 = data1[i]
test2 = data2[i]
# print('data1', test1)