用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 Tkinter GUI编程入门介绍
Mar 10 Python
Linux下python制作名片示例
Jul 20 Python
uwsgi+nginx部署Django项目操作示例
Dec 04 Python
python配置grpc环境
Jan 01 Python
python实现自动解数独小程序
Jan 21 Python
python绘制地震散点图
Jun 18 Python
python子线程退出及线程退出控制的代码
Oct 16 Python
在Pytorch中计算自己模型的FLOPs方式
Dec 30 Python
Python实现将元组中的元素作为参数传入函数的操作
Jun 05 Python
python连接mysql数据库并读取数据的实现
Sep 25 Python
全网最详细的PyCharm+Anaconda的安装过程图解
Jan 25 Python
Jupyter Notebook 如何修改字体和大小以及更改字体样式
Jun 03 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
Zend的Registry机制的使用说明
2013/05/02 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
2020/04/23 PHP
基于jquery的让textarea自适应高度的插件
2010/08/03 Javascript
JSChart轻量级图形报表工具(内置函数中文参考)
2010/10/11 Javascript
JS代码优化技巧之通俗版(减少js体积)
2011/12/23 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
2015/08/24 Javascript
基于JQuery实现分隔条的功能
2016/06/17 Javascript
easyui中combotree循环获取父节点至根节点并输出路径实现方法
2016/11/10 Javascript
手机软键盘弹出时影响布局的解决方法
2016/12/15 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
原生JS实现小小的音乐播放器
2017/10/16 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
2017/11/27 Javascript
JavaScript代码实现txt文件的上传预览功能
2018/03/27 Javascript
jQuery中的for循环var与let的区别
2018/04/21 jQuery
小程序云开发初探(小结)
2018/10/24 Javascript
微信小程序分享海报生成的实现方法
2018/12/10 Javascript
使用JavaScrip模拟实现仿京东搜索框功能
2019/10/16 Javascript
vue实现虚拟列表功能的代码
2020/07/28 Javascript
Python实现的选择排序算法示例
2017/11/29 Python
Python通过matplotlib绘制动画简单实例
2017/12/13 Python
python实现百万答题自动百度搜索答案
2018/01/16 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
2019/06/19 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
python中对_init_的理解及实例解析
2019/10/11 Python
Python高级编程之继承问题详解(super与mro)
2019/11/19 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
2020/02/28 Python
Python使用内置函数setattr设置对象的属性值
2020/10/16 Python
HTML5 3D衣服摇摆动画特效
2016/03/17 HTML / CSS
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
斯洛伐克家具和时尚装饰品购物网站:Butlers.sk
2019/09/08 全球购物
捷克家电和家具购物网站:OKAY.cz
2020/07/23 全球购物
Java提供了哪些企业应用编程接口
2015/02/13 面试题
房屋转让协议书
2014/04/11 职场文书
导师推荐信范文
2014/05/09 职场文书
巾帼建功标兵事迹材料
2014/05/11 职场文书
营销经理工作检讨书
2014/11/03 职场文书