用python对excel查重


Posted in Python onDecember 07, 2020

最近媳妇工作上遇到一个重复性劳动,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对excel查重的详细内容,更多关于python excel查重的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python程序设计入门(5)类的使用简介
Jun 16 Python
hmac模块生成加入了密钥的消息摘要详解
Jan 11 Python
PHP实现发送和接收JSON请求
Jun 07 Python
Python封装原理与实现方法详解
Aug 28 Python
使用pandas把某一列的字符值转换为数字的实例
Jan 29 Python
python切片的步进、添加、连接简单操作示例
Jul 11 Python
基于Python批量生成指定尺寸缩略图代码实例
Nov 20 Python
Java Unsafe类实现原理及测试代码
Sep 15 Python
Django实现文章详情页面跳转代码实例
Sep 16 Python
Python使用for生成列表实现过程解析
Sep 22 Python
Python结合百度语音识别实现实时翻译软件的实现
Jan 18 Python
Python Pytorch查询图像的特征从集合或数据库中查找图像
Apr 09 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
Dec 07 #Python
python 通过 pybind11 使用Eigen加速代码的步骤
Dec 07 #Python
Python中BeautifulSoup通过查找Id获取元素信息
Dec 07 #Python
BeautifulSoup中find和find_all的使用详解
Dec 07 #Python
python爬虫beautifulsoup解析html方法
Dec 07 #Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
Dec 07 #Python
用ldap作为django后端用户登录验证的实现
Dec 07 #Python
You might like
有关phpmailer的详细介绍及使用方法
2013/01/28 PHP
php实现scws中文分词搜索的方法
2015/12/25 PHP
利用PHP获取汉字首字母并且分组排序详解
2017/10/22 PHP
php快速导入大量数据的实例方法
2019/09/23 PHP
PHP如何防止用户重复提交表单
2020/12/09 PHP
JavaScript窗口功能指南之在窗口中书写内容
2006/07/21 Javascript
让iframe框架网页在任何浏览器下自动伸缩
2006/08/18 Javascript
JavaScript返回0-1之间随机数的方法
2015/04/06 Javascript
JS实现的竖向折叠菜单代码
2015/10/21 Javascript
jQuery插件实现多级联动菜单效果
2015/12/01 Javascript
JS组件Bootstrap Table布局详解
2016/05/27 Javascript
JS获取年月日时分秒的方法分析
2016/11/28 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
详解angularjs popup-table 弹出框表格指令
2017/09/20 Javascript
Vue axios全局拦截 get请求、post请求、配置请求的实例代码
2018/11/28 Javascript
layui之table checkbox初始化时选中对应选项的方法
2019/09/02 Javascript
基于javascript实现放大镜特效
2020/12/03 Javascript
[14:24]Optic Gaming vs PSG LGD BO3
2018/06/07 DOTA
python通过exifread模块获得图片exif信息的方法
2015/03/16 Python
python使用xmlrpclib模块实现对百度google的ping功能
2015/06/02 Python
kafka-python 获取topic lag值方式
2019/12/23 Python
pycharm部署、配置anaconda环境的教程
2020/03/24 Python
python如何查看安装了的模块
2020/06/23 Python
python语音识别指南终极版(有这一篇足矣)
2020/09/09 Python
通用的Django注册功能模块实现方法
2021/02/05 Python
HTML5页面音视频在微信和app下自动播放的实现方法
2016/10/20 HTML / CSS
Stuart Weitzman美国官网:美国奢华鞋履品牌
2016/08/18 全球购物
Brother加拿大官网:打印机、贴标机、缝纫机
2019/10/09 全球购物
介绍一下EJB的分类及其各自的功能及应用
2016/08/23 面试题
中专生毕业个人鉴定
2014/02/26 职场文书
北京故宫导游词
2015/01/31 职场文书
党员廉洁自律个人总结
2015/02/13 职场文书
运动会1000米加油稿
2015/07/21 职场文书
浅谈Golang 嵌套 interface 的赋值问题
2021/04/29 Golang
关于springboot 配置date字段返回时间戳的问题
2021/07/25 Java/Android