用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调用新浪微博API项目实践
Jul 28 Python
python调用fortran模块
Apr 08 Python
Python处理JSON时的值报错及编码报错的两则解决实录
Jun 26 Python
利用Python2下载单张图片与爬取网页图片实例代码
Dec 25 Python
Python 获得命令行参数的方法(推荐)
Jan 24 Python
python如何派生内置不可变类型并修改实例化行为
Mar 21 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
Aug 07 Python
关于PyTorch 自动求导机制详解
Aug 18 Python
Python操作SQLite数据库过程解析
Sep 02 Python
在keras中获取某一层上的feature map实例
Jan 24 Python
Opencv求取连通区域重心实例
Jun 04 Python
详细介绍python类及类的用法
May 31 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从身份证号中获取一系列线索(星座、生肖、生日等)
2016/05/11 PHP
php禁用函数设置及查看方法详解
2016/07/25 PHP
YII框架实现自定义第三方扩展操作示例
2019/04/26 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
利用js的Node遍历找到repeater的一个字段实例介绍
2013/04/25 Javascript
浅析javascript中函数声明和函数表达式的区别
2015/02/15 Javascript
jQuery提示插件alertify使用指南
2015/04/21 Javascript
js实现的二级横向菜单条实例
2015/08/22 Javascript
Nodejs如何搭建Web服务器
2016/03/28 NodeJs
BootStrap iCheck插件全选与获取value值的解决方法
2016/08/24 Javascript
jQuery EasyUI中的日期控件DateBox修改方法
2016/11/09 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
2017/01/16 Javascript
Node 升级到最新稳定版的方法分享
2018/05/17 Javascript
vue.js计算属性computed用法实例分析
2018/07/06 Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
2019/05/22 Javascript
微信内置开发 iOS修改键盘换行为搜索的解决方案
2019/11/06 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
2020/11/12 Javascript
[01:23]2014DOTA2国际邀请赛 球迷无处不在Ti现场世界杯受关注
2014/07/10 DOTA
[02:10]DOTA2亚洲邀请赛 EG战队出场宣传片
2015/02/07 DOTA
[02:23]完美世界全国高校联赛街访DOTA2第一期
2019/11/28 DOTA
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
Python实现的序列化和反序列化二叉树算法示例
2019/03/02 Python
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
2016/12/22 HTML / CSS
HTML5不支持标签和新增标签详解
2016/06/27 HTML / CSS
canvas里面如何基于随机点绘制一个多边形的方法
2018/06/13 HTML / CSS
HTML5实现移动端点击翻牌功能
2020/10/23 HTML / CSS
美国花布包包品牌:Vera Bradley
2017/08/11 全球购物
牵手50香港:专为黄金岁月的单身人士而设的交友网站
2020/08/14 全球购物
大学生党课思想汇报
2013/12/29 职场文书
心得体会范文
2014/01/04 职场文书
日语专业求职信
2014/07/04 职场文书
入党积极分子对十八届四中全会期盼的思想汇报
2014/10/17 职场文书
承诺书范本
2015/01/21 职场文书
员工辞职信范文
2015/03/02 职场文书
小学学习委员竞选稿
2015/11/20 职场文书
一小时迅速入门Mybatis之bind与多数据源支持 Java API
2021/09/15 Javascript