用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中的yield浅析
Jun 16 Python
Python实现的飞速中文网小说下载脚本
Apr 23 Python
Python中转换角度为弧度的radians()方法
May 18 Python
在Django框架中伪造捕捉到的URLconf值的方法
Jul 18 Python
python获取多线程及子线程的返回值
Nov 15 Python
Python中Scrapy爬虫图片处理详解
Nov 29 Python
python判断一个集合是否为另一个集合的子集方法
May 04 Python
python使用socket 先读取长度,在读取报文内容示例
Sep 26 Python
Python龙贝格法求积分实例
Feb 29 Python
python多进程使用函数封装实例
May 02 Python
python绘制分布折线图的示例
Sep 24 Python
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
Apr 20 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
2.PHP入门
2006/10/09 PHP
Symfony2安装第三方Bundles实例详解
2016/02/04 PHP
yii2 数据库读写分离配置示例
2017/02/10 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
通过PHP设置BugFree获取邮箱通知
2019/04/25 PHP
向fckeditor编辑器插入指定代码的方法
2007/05/25 Javascript
JS request函数 用来获取url参数
2010/05/17 Javascript
JS打开图片另存为对话框实现代码
2012/12/26 Javascript
html+javascript实现可拖动可提交的弹出层对话框效果
2013/08/05 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
2016/09/18 Javascript
基于JS设计12306登录页面
2016/12/28 Javascript
jQuery提示框插件SweetAlert用法分析
2019/08/05 jQuery
使用Vue+Django+Ant Design做一个留言评论模块的示例代码
2020/06/01 Javascript
Vue js with语句原理及用法解析
2020/09/03 Javascript
vue修改Element的el-table样式的4种方法
2020/09/17 Javascript
JS如何监听div的resize事件详解
2020/12/03 Javascript
聊聊vue 中的v-on参数问题
2021/01/29 Vue.js
[03:19]2016国际邀请赛中国区预选赛第四日TOP10镜头集锦
2016/07/01 DOTA
Python手机号码归属地查询代码
2016/05/04 Python
Python计时相关操作详解【time,datetime】
2017/05/26 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
Python使用tkinter库实现文本显示用户输入功能示例
2018/05/30 Python
python中时间、日期、时间戳的转换的实现方法
2019/07/06 Python
Django中reverse反转并且传递参数的方法
2019/08/06 Python
Python sql注入 过滤字符串的非法字符实例
2020/04/03 Python
python爬虫容易学吗
2020/06/02 Python
Nicole Miller官方网站:纽约女装品牌
2019/09/14 全球购物
个人求职自荐信范文
2014/06/20 职场文书
春节超市活动方案
2014/08/14 职场文书
老公给老婆的检讨书(精华篇)
2014/10/18 职场文书
五好家庭事迹材料
2014/12/20 职场文书
教师节简报
2015/07/20 职场文书
巾帼建功标兵先进事迹材料
2016/02/29 职场文书
施工安全责任协议书
2016/03/23 职场文书
Apache Calcite 实现方言转换的代码
2021/04/24 Servers
为什么你写的height:100%不起作用
2021/05/10 HTML / CSS