拿到一个表,让我实现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()