用python对excel查重
作者:咸鱼Doyoung 发布时间:2022-03-09 05:21:47
标签:python,excel,查重
最近媳妇工作上遇到一个重复性劳动,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
来源:https://www.cnblogs.com/Doyoung/p/14077054.html


猜你喜欢
- 一、认识h函数Vue推荐在绝大数情况下使用模板来创建你的HTML,然后一些特殊的场景,你真的需要JavaScript的完全编程的能力,这个时
- 安装jieba库教程jieba库是一款优秀的 Python 第三方中文分词库,jieba 支持三种分词模式:精确模式、全模式和搜索引擎模式,
- 先看要实现的饼图效果图方法一:使用seriesseries: [ { &
- try { int readByte = 0;
- 1、先介绍如何用PHP连上数据库(数据库用户名“root”,密码“sun”,有库“myguestbook”) 图62、PHP和My
- 前言利用Python+graphics模块实现AI五子棋。让我们愉快地开始吧~~~效果展示源码import sysimport cfgfro
- 概述web项目,经常需要热启动各种各样的配置信息,一旦这些服务发生变更,我们需要重新启动web server,以使配置生效,实现配置热加载。
- 导包效果展示以下截图显示的撤回消息类型依次是文字消息、微信自带表情、图片、语音、定位地图、名片、公众号文章、音乐、视频。有群里撤回的,也有个
- 印刷和网络是不一样的。传统的布局排版并不适于网络,因为传统的印刷布局,几乎只想要什么样的平面效果都能很好的达到,但在网络上设计就很困难,尽管
- import httplibimport osimport timedef check_http(i):
- 本文介绍基于Python语言,实现对多个不同Excel文件进行数据读取与平均值计算的方法。首先,让我们来看一下具体需求:目前有一个文件夹,其
- 错误15105,从网上找了一些解决方案,一般都是说文件的权限不足的问题,当然附加的时候必须是有数据库附加权限才可以操作的。解决办法1:给相应
- 库的管理创建库create database [if not exists] 库名;删除库drop databases [if exists
- 阅读上一篇:成为一个顶级设计师的第一准则限制你的色彩成为一个顶级设计师的7个简单原则的第二部分限制使用你的色彩。好象上个准则是让你限制用你的
- 这一篇MobaXterm详细使用教程,我们来介绍一下如何设置并用MobaXterm来连接Linux服务器。MobaXterm 又名 Moba
- 前言:本博客只是因为我正在上计算机图形学这门课,为了方便复习所写,所以内容的正确性不敢保证,各位观看之前请三思(欢迎大佬提出建议)为VS20
- 一、前言我们一般在做接口关联时,会通过保存中间变量实现接口关联,在关联时就需要用到变量提取,那今天我们就介绍接口自动化中变量提取的两大神器:
- 大家好,本文将分享如何使用matplotlib制作动态条形图,制作的图很美,这个是我在之前发布的一篇中使用的图片,效果如下制作思路为了方便大
- python为main方法传参执行python脚本的时候,想给main方法传入参数的例子#!/usr/bin/env python# -*-
- 曾经见过为了让钩子函数的异步代码可以同步执行,而对钩子函数使用async/await,就好像下面的代码:// exp-01export de