用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 19 Python
python中nan与inf转为特定数字方法示例
May 11 Python
Python简单生成8位随机密码的方法
May 24 Python
python 按不同维度求和,最值,均值的实例
Jun 28 Python
Python实现高斯函数的三维显示方法
Dec 29 Python
从0开始的Python学习014面向对象编程(推荐)
Apr 02 Python
Python 爬虫实现增加播客访问量的方法实现
Oct 31 Python
python将数组n等分的实例
Dec 02 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
Jan 10 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
Dec 04 Python
Python list列表删除元素的4种方法
Nov 01 Python
解决IDEA翻译插件Translation报错更新TTK失败不能使用
Apr 24 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
thinkphp如何获取客户端IP
2015/11/03 PHP
PHP和MYSQL实现分页导航思路详解
2017/04/11 PHP
固定表格行列(expression)在IE下适用
2013/07/25 Javascript
Javascript 遮罩层和加载效果代码
2013/08/01 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
2014/01/07 Javascript
JavaScript转换二进制编码为ASCII码的方法
2015/04/16 Javascript
window.onerror()的用法与实例分析
2016/01/27 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
2016/12/16 Javascript
js实现密码强度检验
2017/01/15 Javascript
Vue2递归组件实现树形菜单
2017/04/10 Javascript
JS生成随机打乱数组的方法示例
2017/12/23 Javascript
vue移动端实现下拉刷新
2018/04/22 Javascript
使用JavaScript破解web
2018/09/28 Javascript
vue实现的组件兄弟间通信功能示例
2018/12/04 Javascript
深入学习Vue nextTick的用法及原理
2019/10/08 Javascript
Javascript原型链及instanceof原理详解
2020/05/25 Javascript
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
2014/11/18 Python
玩转python selenium鼠标键盘操作(ActionChains)
2020/04/12 Python
python解决汉字编码问题:Unicode Decode Error
2017/01/19 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
2018/04/12 Python
tensorflow 1.0用CNN进行图像分类
2018/04/15 Python
Python OpenCV实现鼠标画框效果
2020/08/19 Python
python实现Oracle查询分组的方法示例
2020/04/30 Python
Python 的 f-string 可以连接字符串与数字的原因解析
2021/02/20 Python
HTML5中div、article、section的区别及使用介绍
2013/08/14 HTML / CSS
纽约21世纪百货官网:Century 21
2016/08/27 全球购物
英国在线自行车店:Merlin Cycles
2018/08/20 全球购物
小学教师学期末自我评价
2013/09/25 职场文书
社会保险接收函
2014/01/12 职场文书
英语感恩演讲稿
2014/01/14 职场文书
会议活动邀请函
2014/01/27 职场文书
学校政风行风评议工作总结
2014/10/21 职场文书
个人整改措施落实情况汇报
2014/10/29 职场文书
2015领导干部廉洁自律工作总结
2015/07/23 职场文书
Python如何导出导入所有依赖包详解
2021/06/08 Python
如何利用 CSS Overview 面板重构优化你的网站
2021/10/24 HTML / CSS