用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实现ftp客户端示例分享
Feb 17 Python
Python解析xml中dom元素的方法
Mar 12 Python
Python解析json文件相关知识学习
Mar 01 Python
基于python实现聊天室程序
Jul 27 Python
使用 Python 实现微信群友统计器的思路详解
Sep 26 Python
python 搭建简单的http server,可直接post文件的实例
Jan 03 Python
Python第三方库face_recognition在windows上的安装过程
May 03 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
Aug 13 Python
python自动化实现登录获取图片验证码功能
Nov 20 Python
plt.figure()参数使用详解及运行演示
Jan 08 Python
python中pdb模块实例用法
Jan 15 Python
Python 图片处理库exifread详解
Feb 25 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
评分9.0以上的动画电影,剧情除了经典还很燃
2020/03/04 日漫
php UTF8 文件的签名问题
2009/10/30 PHP
php封装的page分页类完整实例
2016/10/18 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
2019/09/30 PHP
jQuery学习笔记[1] jQuery中的DOM操作
2010/12/03 Javascript
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
js去除空格的12种实用方法
2013/11/08 Javascript
Node.js和MongoDB实现简单日志分析系统
2015/04/25 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
jQuery设置聚焦并使光标位置在文字最后的实现方法
2016/08/02 Javascript
JS简单封装的图片无缝滚动效果示例【测试可用】
2017/03/22 Javascript
利用jquery正则表达式在页面验证url网址输入是否正确
2017/04/04 jQuery
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
微信小程序 转发功能的实现
2017/08/04 Javascript
基于ES6 Array.of的用法(实例讲解)
2017/09/05 Javascript
使用jQuery 操作table 完成单元格合并的实例
2017/12/27 jQuery
使用vue实现grid-layout功能实例代码
2018/01/05 Javascript
JavaScript运行原理分析
2018/02/09 Javascript
使用electron将vue-cli项目打包成exe的方法
2018/09/29 Javascript
Vue 中的受控与非受控组件的实现
2018/12/17 Javascript
详解JavaScript 的变量
2019/03/08 Javascript
jquery 键盘事件 keypress() keydown() keyup()用法总结
2019/10/23 jQuery
javascript实现京东快递单号的查询效果
2020/11/30 Javascript
Python 解析XML文件
2009/04/15 Python
python Django模板的使用方法(图文)
2013/11/04 Python
对Python中创建进程的两种方式以及进程池详解
2019/01/14 Python
python实现倒计时小工具
2019/07/29 Python
Django为窗体加上防机器人的验证码功能过程解析
2019/08/14 Python
Python学习笔记之集合的概念和简单使用示例
2019/08/22 Python
HTML5 直播疯狂点赞动画实现代码 附源码
2020/04/14 HTML / CSS
英国领先的葡萄酒专家:Majestic Wine
2017/05/30 全球购物
泰国网上购物:Shopee泰国
2018/09/14 全球购物
《小猪家的桃花树》教学反思
2014/04/11 职场文书
运动会广播稿20字
2015/08/19 职场文书
七年级作文之英语老师
2019/10/28 职场文书
Vue如何实现组件间通信
2021/05/15 Vue.js