用python对excel查重
作者:咸鱼Doyoung 发布时间:2022-03-09 05:21:47
标签:python,excel,查重
最近媳妇工作上遇到一个重复性劳动,excel表格查重,重复的标记起来,问我能不能写个程序让它自动查重标记
必须安排
第一次正儿八经写python,边上网查资料,边写
终于成功了
在此记录一下
首先安装xlwings库
pip install xlwings
写代码
import xlwings as xw
# 输入表名
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 = []
# 将需要的数据读取保存
for row in range(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
def isRepeat(index):
for num in flag:
if num == index:
return True
else:
continue
return False
# 遍历每一行,进行查重
for row in range(0, len(money)):
# 判断是否已经标记为重复
# 如果重复不做判断,结束本次循环
# 否则断续向下执行
if True == isRepeat(row + 2):
continue
elif False == isRepeat(row + 2):
# 获取当前行数据
current = money[row]
# 遍历后面行是否和当前行数据重复
for subRow in range(1, len(money)):
# 获取下一行数据
subCur = money[subRow]
# 判断当前行内容和对比行内容是否相等
if current == subCur:
# 再判断编号行内容是否相等
if num[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("Press Any Key")
鉴于媳妇办公电脑不方便安装python环境,所以打包成exe可执行程序,使用pyinstaller工具
安装
pip install pyinstaller
打包
# -F 打包为单文件
# -i 指定图标
pyinstaller -F *.py -i *.ico
来源:https://www.cnblogs.com/Doyoung/p/14077054.html
0
投稿
猜你喜欢
- 从这节开始,将会给大家介绍几个ASP中的三大通用类,它贯穿于我所设计的三层架构中,是对ASP语法的扩展,可以提高很多细节处理上的效率,可以算
- 英语原文地址:点此浏览新年开始了,来点猛料,放上15个漂亮的网页排版的demo,来欣赏一下。去年我也专门找了15个同类网站,比较受用户欢迎,
- 很多开发人员在刚开始学Python 时,都考虑过像 c++ 那样来实现 singleton 模式,但后来会发现 c++ 是 c++,Pyth
- from keras.utils.np_utils import to_categorical注意:当使用categorical_cross
- 本文实例讲述了python打开url并按指定块读取网页内容的方法。分享给大家供大家参考。具体实现方法如下:import urllibpage
- var a = 0, b = 0;[0, 0].sort(function() {a = 1;return 0;});[0, 1].sort
- Socket 套接字:通讯端点 简介socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用【打开】【读
- 叨逼叨首先,介绍一下 pdb 调试,pdb 是 python 的一个内置模块,用于命令行来调试 Python 代码。或许你会说,现在用 Py
- 官方网站 : www.python.orgPython is an interpreted, interactive, object-ori
- class Helper_Page{ /** 总信息数 */ var $infoCount; /** 总页数 */ var $pageCou
- python运行其他程序的实现方法  
- 聚合函数 count,max,min,avg,sum... select count (*) from T_Employee select
- 只要你的Web开发知识不是语文老师教的,那么你应该已经知道一个合格的开发者应该永远抱着怀疑的眼光看用户提交的数据。你不仅需要在前端通过表单或
- Python Logging原来真的远比我想象的要复杂很多很多,学习路线堪比git。但是又绕不过去,alternatives又少,所以必须要
- 简单Python词法分析器实现,供大家参考,具体内容如下词法分析器状态转换图:词法分析器总流程图:预处理程序:词法分析器:词法分析器程序详细
- 今天遇到一个要破解的栅栏密码,先给大家介绍通用的脚本。方法一(通用脚本):#!/usr/bin/env python # -*- codin
- 概述你是否有微信被删了好友不自知,还傻傻的给对方发消息,结果出现了下图中那尴尬的一幕的经历呢?其实我们可以用Python提前把他们找出来并自
- 提起python做网络爬虫就不得不说到强大的组件urllib2。在python中正是使用urllib2这个组件来抓取网页的。urllib2是
- 引言:在阅读源码时,有很多简写的形式,其中一个比较常用的就是getattr()用来调用一个类中的变量或者方法,相关联的hasat
- with 用法理解Overviewwith 与with之后的object一起,起到了抛出异常和单独生成一个空间让代码在空间里运行的效果。实验