用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爬取B站千万级数据
Jun 08 Python
Python数据可视化教程之Matplotlib实现各种图表实例
Jan 13 Python
python3.6实现学生信息管理系统
Feb 21 Python
Python多线程threading模块用法实例分析
May 22 Python
PyQt5实现简易电子词典
Jun 25 Python
使用Python轻松完成垃圾分类(基于图像识别)
Jul 09 Python
Python with语句和过程抽取思想
Dec 23 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
Apr 02 Python
python实现每天自动签到领积分的示例代码
Aug 18 Python
解决Python3.8运行tornado项目报NotImplementedError错误
Sep 02 Python
Python CategoricalDtype自定义排序实现原理解析
Sep 11 Python
python实战之一步一步教你绘制小猪佩奇
Apr 22 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
php 多个submit提交表单 处理方法
2009/07/07 PHP
PHP大转盘中奖概率算法实例
2014/10/21 PHP
PHP中的闭包(匿名函数)浅析
2015/02/07 PHP
中高级PHP程序员应该掌握哪些技术?
2016/09/23 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
2019/06/13 PHP
laravel5.1 ajax post 传值_token示例
2019/10/24 PHP
jquery下动态显示jqGrid以及jqGrid的属性设置容易出现问题的解决方法
2010/10/22 Javascript
jquery ajax abort()的使用方法
2010/10/28 Javascript
js 判断checkbox是否选中的操作方法
2012/11/09 Javascript
Bootstrap模块dropdown实现下拉框响应
2016/05/22 Javascript
js图片上传前预览功能(兼容所有浏览器)
2016/08/24 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
jQuery中图片展示插件highslide.js的简单dom
2018/04/22 jQuery
Vue实现拖放排序功能的实例代码
2019/07/08 Javascript
微信小游戏中three.js离屏画布的示例代码
2020/10/12 Javascript
vue 实现click同时传入事件对象和自定义参数
2021/01/29 Vue.js
python批量提交沙箱问题实例
2014/10/08 Python
简述:我为什么选择Python而不是Matlab和R语言
2017/11/14 Python
使用python装饰器计算函数运行时间的实例
2018/04/21 Python
python实现自动解数独小程序
2019/01/21 Python
django2.0扩展用户字段示例
2019/02/13 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
2020/09/09 Python
python字典与json转换的方法总结
2020/12/28 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
2021/02/16 Python
CSS3中的Media Queries学习笔记
2016/05/23 HTML / CSS
德国运动营养和健身网上商店:Myprotein.de
2018/07/18 全球购物
意大利自行车商店:Cingolani Bike Shop
2019/09/03 全球购物
临床医学专业个人的自我评价
2013/09/27 职场文书
保险公司早会主持词
2014/03/22 职场文书
党的群众路线教育实践方案
2014/05/11 职场文书
入党积极分子自我批评思想汇报
2014/10/10 职场文书
面试通知邮件
2015/04/20 职场文书
2015年妇委会工作总结
2015/05/22 职场文书
使用Redis实现点赞取消点赞的详细代码
2022/03/20 Redis