用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判断变量是否已经定义的方法
Aug 18 Python
在Python中使用zlib模块进行数据压缩的教程
Jun 26 Python
Python设计模式编程中Adapter适配器模式的使用实例
Mar 02 Python
python中plot实现即时数据动态显示方法
Jun 22 Python
python使用rpc框架gRPC的方法
Aug 24 Python
Python 实现异步调用函数的示例讲解
Oct 14 Python
Python文件路径名的操作方法
Oct 30 Python
numpy:np.newaxis 实现将行向量转换成列向量
Nov 30 Python
pytorch-RNN进行回归曲线预测方式
Jan 14 Python
基于python实现微信好友数据分析(简单)
Feb 16 Python
解决python的空格和tab混淆而报错的问题
Feb 26 Python
解决hive中导入text文件遇到的坑
Apr 07 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
xml在joomla表单中的应用详解分享
2012/07/19 PHP
php中动态调用函数的方法
2015/03/16 PHP
微信公众号开发之文本消息自动回复php代码
2016/08/08 PHP
JavaScript 创建对象
2009/07/17 Javascript
用jquery实现自定义风格的滑动条实现代码
2011/04/26 Javascript
读jQuery之十 事件模块概述
2011/06/27 Javascript
JavaScript实现的日期控件具体代码
2013/11/18 Javascript
jquery.Ajax()方法调用Asp.Net后台的方法解析
2014/02/13 Javascript
nodejs教程之异步I/O
2014/11/21 NodeJs
JS倒计时代码汇总
2014/11/25 Javascript
jQuery中bind()方法用法实例
2015/01/19 Javascript
JS实现DIV容器赋值的方法
2015/12/14 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
2016/12/15 Javascript
js遮罩效果制作弹出注册界面效果
2017/01/25 Javascript
Bootstrap导航中表单简单实现代码
2017/03/06 Javascript
深入nodejs中流(stream)的理解
2017/03/27 NodeJs
jQuery中的deferred对象和extend方法详解
2017/05/08 jQuery
使用Require.js封装原生js轮播图的实现代码
2017/06/15 Javascript
JS模拟超市简易收银台小程序代码解析
2017/08/18 Javascript
使用js获取伪元素的content实例
2017/10/24 Javascript
ES6解构赋值实例详解
2017/10/31 Javascript
基于JS实现html中placeholder属性提示文字效果示例
2018/04/19 Javascript
原生js实现trigger方法示例代码
2019/05/22 Javascript
java遇到微信小程序 "支付验证签名失败" 问题解决
2019/12/22 Javascript
JS获取一个字符串中指定字符串第n次出现的位置
2021/02/10 Javascript
简单实现python爬虫功能
2015/12/31 Python
python中的数据结构比较
2019/05/13 Python
python学习笔记之多进程
2020/08/06 Python
大学毕业生工作的自我评价
2013/10/01 职场文书
英文版区域经理求职信
2013/10/23 职场文书
乡镇食品安全责任书
2014/07/28 职场文书
用人单位终止解除劳动合同证明书
2014/10/06 职场文书
致创业您:正能量激励人心句子(48条)
2019/08/15 职场文书
Flask response响应的具体使用
2021/07/15 Python
《王者天下》第4季首话新剧照 4月9日正式开播
2022/04/07 日漫
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技