最近媳妇工作上遇到一个重复性劳动,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

python照片查重_Python 进行excel查重相关推荐

  1. python生成表格文件_python 读取excel文件生成sql文件实例详解

    python 读取excel文件生成sql文件实例详解 学了python这么久,总算是在工作中用到一次.这次是为了从excel文件中读取数据然后写入到数据库中.这个逻辑用java来写的话就太重了,所以 ...

  2. python编辑学生分数_python处理excel(04)数据筛选和过滤

    源数据,我们最终要找出年龄在18--30岁之间,分数大于85分的学生,为A类学生.在excel里可以使用筛选功能,先筛选age列,大于等于.小于.这两个条件限制.然后选score后边的小三角,条件为大 ...

  3. excel数据导入python后不对齐_Python处理Excel文件的实用姿势

    真正的勇士,敢于直面银行卡上的余额,敢于正视磅秤上的数字. 表格数据是最常见的数据类型,Excel是日常办公中最常接触的文件. 上一章提过Python可以通过openpyxl模块处理Excel文件. ...

  4. python读取xlsm文件_Python读写EXCEL文件常用方法大全

    前言 python读写excel的方式有很多,不同的模块在读写的讲法上稍有区别,这里我主要介绍几个常用的方式. 数据准备 为了方便演示,我这里新建了一个data.xls和data.xlsx文件,第一个 ...

  5. python数字求和程序_python操作excel求和

    这里介绍如何用python来自动完成我们的excel工作. 本文的目的是展示一些常见的Excel任务,以及如何在python pandas中执行类似的任务.例子微不足道,但重要的是通过这个例子来循序渐 ...

  6. python rfind函数用法_Python语法速查:字符串格式简单处理、子串查找与判断方法?...

    这是一篇python基础知识分享型文章,对学习python感兴趣的朋友们可以仔细看看 字符串常用方法 Python3中,字符串全都用Unicode形式,所以省去了很多以前各种转换与声明的麻烦.字符串属 ...

  7. python单词怎么写_python 写的查单词的脚本

    最近在学习Python,看Document时,好多不认识的单词,每次打开网页有道查询嫌麻烦,自己手写了一个mini的脚本,显示网页的单词解释,功能有限,希望大家给点指点.用到了BeautifulSou ...

  8. python 并查集_python 实现并查集源代码 | 学步园

    问题描述: #coding:utf-8 #py2.7 class unionfind: def __init__(self, groups): self.groups=groups self.item ...

  9. python ip反查询_python ip反查域名

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

最新文章

  1. Laplace数值逆运算的讨论
  2. 105.通信同步异步定义及其相关
  3. margin 等高布局
  4. js方式调用php_举例说明JS调用PHP和PHP调用JS的方法
  5. Maya Calendar
  6. NLP面试复盘 | 阿里/腾讯/头条/paypal/快手
  7. Meta-Learning
  8. ubuntu下vsftpd配置
  9. PHP数字格式化,每三位逗号分隔数字,可以保留小数
  10. MySQL学习(五、数据操作语言DML和事务处理语言TCL)
  11. 2、Ubuntu下安装Vivado下的下载器驱动 Digilent 版本
  12. 【SpringBoot深入浅出系列】SpringBoot之集成JUnit5进行单元测试
  13. supergo定位软件_super go定位修改下载
  14. opencv将多张图片合成视频
  15. CocosCreator快速接入bugly
  16. 系统状态空间模型c语言,【单选题】能完全描述系统动态行为的数学模型是() A. 传递函数 B. 微分方程 C. 状态 空间表...
  17. 使用js脚本实现网页版微信定时发送信息
  18. Centos7配置ssh、rsh免密互信集群服务
  19. 怎样找回计算机以前用户界面,电脑中的窗口颜色更改后如何恢复到以前的状态?...
  20. __builtin_ffs 的使用方法

热门文章

  1. 双卡版本不插卡的情况下状态栏中只显示了一个信号图标,而不是两个信号图标,如何修改为2个图标
  2. char *const p ,char const *p,const char *p的区别
  3. H5如何拉起微信扫一扫
  4. segger j-flash使用笔记
  5. 关于爱国者***的追踪报道[转]
  6. hdu 2094 “产生冠军“
  7. CAJ未授权用户在此计算机,笔记本提示未授予用户在此计算机上的请求登陆类型怎么办...
  8. 华为荣耀开机停留在android,华为荣耀8变砖无法开机怎么办 华为荣耀8变砖无法开机解决方法...
  9. 网站安全之域名被劫持、域名被劫持后该怎么办!!!
  10. php 遍历数组 车牌,javascript,html_为什么我最后输出的车牌号全部是数字啊?明明数组里的是字母多啊!,javascript,html - phpStudy...