python 自动化xlwings实现EXCEL 部分区域排序 并根据结果高亮显示排名前三的数据

拿到一个表,让我实现python每天自动化根据日发展排名来排序,并高亮显示

一、Excel部分

1、首先选择,需要高亮的区域:像这里我选择A4:I23 

 

 2、然后点击条件格式--》新建格式规则--》设置符合公式

 

3、这里我想要排名前三列高亮红色:

固填入=$E4<=MIN($E$4:$E$23)+2 (记得$符号不能少)

解释:就是取排名那一列,且小于等于排名里的最小值+2 也就是前三名

PS:要是取排名后的可以选择=$E4>=MAX($E$4:$E$23)-2 

 4、应用于填入  =$A$4:$I$23  也就是所选的区域(记得$符号不能少)

这样我们就可以实现高亮前几列或者后几列区域了

接下来我们使用python数据进行排序

二、python部分

1、通过python打开Excel文件

import base64
import hashlib
import json
import requests


import xlwings as xw
import pandas as pd


homedir = os.path.dirname(os.path.realpath(__file__))
moban_path = r'C:\Users\Desktop\test001.xlsx' # 模板的名称
print('打开' + moban_path)
app = xw.App(visible=True, add_book=False)
wb = app.books.open(moban_path)
sht = wb.sheets['sheetmz']     #sheet名字

#1.取值
atable=sht.range('A4:E23').value  #先拿值出来处理
df=pd.DataFrame(atable, columns=[ 'danwei','mubiao', 'wanchengliang', 'wanchenglv']) 

#2.排序
sort_df = df.sort_values(by="wanchenglv",ascending=False)
#使用这个函数进行排序,根据完成率来排序(和排名一个道理)
#ascending=False 是降序排序

#3.再将值重新赋到原表
sht.range('A4:E23').value = sort_df .values.tolist()


#4.ok关闭文件
if (os.path.exists(r'C:\Users\Desktop\test001PT2.xlsx')): #如果有的话就删除 没有的话就创建
    os.remove(r'C:\Users\Desktop\test001PT2.xlsx')
wb.save(r'C:\Users\Desktop\test001PT2.xlsx')
app.quit()

再次打开查看表

OK 完毕!

感谢您的观看!!!!!!!!!!!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值