|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 seslovelm 于 2020-8-9 20:46 编辑
一、实现思路
1. 使用xlrd库操作excel表格
2. excel创建两个表单,分别为sheet1和sheet2,行数列数都相同
3. 使用双层循环,遍历对应的单元格,如果有不一样的,则将sheet1对应的单元格打印出来
4. 保存至 找不同.txt文件中
二、整体代码
import xlrd
test = xlrd.open_workbook('这个放文件名') # 注意!此处需要改成自己的excel表名
sheet1 = test.sheet_by_index(0) # 通过索引获取指定工作表,用sheet来接收
rowNum1 = sheet1.nrows
colNum1 = sheet1.ncols
sheet2 = test.sheet_by_index(1) # 通过索引获取指定工作表,用sheet来接收
rowNum2 = sheet2.nrows
colNum2 = sheet2.ncols
for i in range(0, rowNum1):
for j in range(0, colNum1):
data1 = sheet1.cell_value(i, j)
data2 = sheet2.cell_value(i, j)
if data1 != data2:
print(i, j, ' ', data2)
with open('./找不同.txt', 'a', encoding='utf-8')as f:
f.write("第%s行,第%s列\t值为:%s\n" % (i, j, data2))
本人写了个excel自动核对数据代码,但是发现个问题,程序运行核对1万条数据以上,就会卡死。
还有就是程序必须是A列表与B列表顺序 排列一致,条数必须一致才能使用,有没有大佬,能帮忙优化下?就是比如A列表7000条数据,B列表7200条数据,这样也可以快速核对,找出数值一样的,不一样的自动标注成红色。
本人在鱼C论坛,自学了1个半月写出来的程序,能力有限,求各位大佬帮忙下。谢谢。
- from openpyxl import load_workbook
- from openpyxl.styles import colors,PatternFill
- import pandas as pd
- def Read_Excel():
- data1=pd.read_excel('1.xlsx',keep_default_na=False)
- print(data1)
- data2=pd.read_excel('2.xlsx',keep_default_na=False)
- data1=data1.reset_index().astype('str')
- data1.rename(columns={'index':'index1'},inplace=True)
- data2=data2.reset_index().astype('str')
- data2.rename(columns={'index':'index2'},inplace=True)
- data3=data1.merge(data2,left_on='transaction_reference_number',right_on='交易日志号',how='outer')
- print(data3)
- data3.to_excel('3.xlsx')
- return data3
- def Fill_Color(in_filename,out_filename,index):
- fill = PatternFill("solid", fgColor=colors.RED)
- wb1=load_workbook(in_filename)
- ws1=wb1['Sheet1']
- con_max = ws1.max_column
- for i in index:
- for j in range(1,con_max+1):
- ws1.cell(row=int(i)+2,column=j).fill=fill
- wb1.save(out_filename)
- data3=Read_Excel()
- index_excel1=[]
- index_excel2=[]
- for i in data3.index:
- if (data3.loc[i,'debit_amount'] !=data3.loc[i,'支出金额']) or (data3.loc[i,'credit_incurred_amount'] !=data3.loc[i,'收入金额'])\
- or (data3.loc[i,'account_balance'] !=data3.loc[i,'本次余额']):
- index_excel1.append(data3.loc[i,'index1'])
- index_excel2.append(data3.loc[i,'index2'])
- index_excel1=list(set(index_excel1))[1:]
- index_excel2=list(set(index_excel2))[1:]
- print(f'索引1:{index_excel1}')
- print(f'索引2:{index_excel2}')
- Fill_Color('1.xlsx','3.xlsx',index_excel1)
- Fill_Color('2.xlsx','4.xlsx',index_excel2)
复制代码
也不知道是不是你想要的,只能写成这样了
|
|