用python对excel查重
最近媳妇工作上遇到一个重复性劳动,excel表格查重,重复的标记起来,问我能不能写个程序让它自动查重标记
必须安排
第一次正儿八经写python,边上网查资料,边写
终于成功了
在此记录一下
首先安装xlwings库
pipinstallxlwings
写代码
importxlwingsasxw
#输入表名
title=input()
#指定不显示地打开Excel,读取Excel文件
app=xw.App(visible=False,add_book=False)
wb=app.books.open(title)#打开Excel文件
sheet=wb.sheets[0]#选择第0个表单
#获取表行数
sheetInfo=sheet.used_range
maxRow=sheetInfo.last_cell.row
#maxColumn=sheetInfo.last_cell.column
#print('表行数:',maxRow)
#单据编号
num=[]
#报销类型
baoxiaoType=[]
#部门
department=[]
#收款方
name=[]
#报销金额
money=[]
#将需要的数据读取保存
forrowinrange(2,maxRow):
value=sheet.range("A"+str(row)).value
num.append(value)
value=sheet.range("C"+str(row)).value
baoxiaoType.append(value)
value=sheet.range("H"+str(row)).value
department.append(value)
value=sheet.range("N"+str(row)).value
name.append(value)
value=sheet.range("K"+str(row)).value
money.append(value)
#print(num)
#print(baoxiaoType)
#print(department)
#print(name)
#print(money)
#保存标记为重复的行号
flag=[]
#判断是否已经标记为重复
#重复返回Ture
#否则返回False
defisRepeat(index):
fornuminflag:
ifnum==index:
returnTrue
else:
continue
returnFalse
#遍历每一行,进行查重
forrowinrange(0,len(money)):
#判断是否已经标记为重复
#如果重复不做判断,结束本次循环
#否则断续向下执行
ifTrue==isRepeat(row+2):
continue
elifFalse==isRepeat(row+2):
#获取当前行数据
current=money[row]
#遍历后面行是否和当前行数据重复
forsubRowinrange(1,len(money)):
#获取下一行数据
subCur=money[subRow]
#判断当前行内容和对比行内容是否相等
ifcurrent==subCur:
#再判断编号行内容是否相等
ifnum[row]==num[subRow]:
continue
else:
#对比其它内容是否相等
if(
(department[row]==department[subRow])
and(baoxiaoType[row]==baoxiaoType[subRow])
and(name[row]==name[subRow])
):
#将重复行行号保存,表格的表头,且表头行号从1开始,所以行号等于当前索引+2
flag.append(subRow+2)
#设置两个重复行的首列单元格颜色
cell=sheet.range("A"+str(row+2))
cell.color=0,255,255
subcell=sheet.range("A"+str(subRow+2))
subcell.color=0,255,255
#打印提示
print("重复起始行:",row+2,"重复行",subRow+2)
#保存当前工作簿
wb.save()
#关闭当前工作簿
wb.close()
#退出excel程序
app.quit()
#阻塞不退出
input("PressAnyKey")
鉴于媳妇办公电脑不方便安装python环境,所以打包成exe可执行程序,使用pyinstaller工具
安装
pipinstallpyinstaller
打包
#-F打包为单文件 #-i指定图标 pyinstaller-F*.py-i*.ico
以上就是用python对excel查重的详细内容,更多关于pythonexcel查重的资料请关注毛票票其它相关文章!