用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之赋值,简单也不简单
Sep 24 Python
使用Python编写类UNIX系统的命令行工具的教程
Apr 15 Python
利用Python学习RabbitMQ消息队列
Nov 30 Python
python学习教程之使用py2exe打包
Sep 24 Python
python抽取指定url页面的title方法
May 11 Python
python re模块的高级用法详解
Jun 06 Python
python的sorted用法详解
Jun 25 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
Aug 14 Python
Python中的xlrd模块使用原理解析
May 21 Python
keras CNN卷积核可视化,热度图教程
Jun 22 Python
python模块内置属性概念及实例
Feb 18 Python
python双向链表实例详解
May 25 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
世界收音机发展史
2021/03/01 无线电
PHP中error_reporting()函数的用法(修改PHP屏蔽错误)
2011/07/01 PHP
PHP分多步骤填写发布信息的简单方法实例代码
2012/09/23 PHP
zf框架的registry(注册表)使用示例
2014/03/13 PHP
php解析url并得到url中的参数及获取url参数的四种方式
2015/10/26 PHP
PHP实现添加购物车功能
2017/03/06 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
2020/08/30 PHP
Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件
2009/09/15 Javascript
javascript得到当前页的来路即前一页地址的方法
2014/02/18 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
实例分析javascript中的call()和apply()方法
2014/11/28 Javascript
jquery实现下拉框功能效果【实例代码】
2016/05/06 Javascript
javascript事件冒泡简单示例
2016/06/20 Javascript
JQuery动态添加Select的Option元素实现方法
2016/08/29 Javascript
JS简单实现tab切换效果的多窗口显示功能
2016/09/07 Javascript
jQuery和JavaScript节点插入元素的方法对比
2016/11/18 Javascript
关于定制FileField中的上传文件名称问题
2017/08/22 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
2018/05/15 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
2018/06/04 Javascript
Vue实现左右菜单联动实现代码
2018/08/12 Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
2019/01/15 Javascript
js中Function引用类型常见有用的方法和属性详解
2019/12/11 Javascript
vue实现轮播图帧率播放
2021/01/26 Vue.js
[52:20]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python脚本文件打包成可执行文件的方法
2015/06/02 Python
详解如何将python3.6软件的py文件打包成exe程序
2018/10/09 Python
详解python解压压缩包的五种方法
2019/07/05 Python
python计算二维矩形IOU实例
2020/01/18 Python
Python实现新型冠状病毒传播模型及预测代码实例
2020/02/05 Python
python3通过udp实现组播数据的发送和接收操作
2020/05/05 Python
Pytorch实现将模型的所有参数的梯度清0
2020/06/24 Python
HTML5 Canvas鼠标与键盘事件demo示例
2013/07/04 HTML / CSS
表扬稿格式范文
2015/01/16 职场文书
2015年药房工作总结
2015/04/25 职场文书
bat批处理之字符串操作的实现
2022/03/16 Python