python-把excel一列值的排序后前n元素,后m元素的单元格着色

需求所述如标题所示,直接贴代码了:

import pandas as pd
import xlwings as xw
import copy

def sort_value_get_min_max(oridata,first_value,second_value):
    min_max_list = []
    oridata.sort()
    min = oridata[0:first_value]
    oridata.sort(reverse=True)
    max = oridata[0:second_value]
    min_max_list.append(min)
    min_max_list.append(max)
    return min_max_list

#读取单元格数值
def getSheetDataFromExcel1(path, sheetName, start):
    wb = xw.Book(path)
    todaySheet = wb.sheets[sheetName]
    data = todaySheet.range(start).value
    return data

#找到原始数据表中的这个值的位置,然后推断出这个值在excel中的位置
def position_excel_min_max_data(first_value,second_value):
    table_data = getSheetDataFromExcel1('.\测试颜色表格.xlsx','Sheet1','A2:A13')
    table_data_temp = copy.deepcopy(table_data)
    min_max_list = sort_value_get_min_max(table_data_temp,first_value,second_value)
    min = min_max_list[0]
    max = min_max_list[1]
    position = [];

    #先处理小的
    for j in min:
        position.append(table_data.index(j))
    for i in max:
        position.append(table_data.index(i))
    return position

#上色
def color_excel_min_max_data(first_value,second_value):
    wb = xw.Book('.\测试颜色表格.xlsx')
    sht = wb.sheets['Sheet1']
    length = len(position_excel_min_max_data(first_value,second_value))
    for i in position_excel_min_max_data(first_value,second_value)[0:first_value]:
        sht.range('A' + str(i+2)).color = 0x00FF00
    for j in position_excel_min_max_data(first_value,second_value)[-second_value:]:
        sht.range('A' + str(j+2)).color = 0xFF0000
color_excel_min_max_data(4,5)

虽然这个需求完成了,但是可扩展性不强,只能一步步计算,目前没找到怎样返回值所对应的单元格的方法。以下是CSDN的Weiming Chen提出的一种方案,扩展性较强些,可以参考。

首先遍历肯定是横坐标纵坐标都遍历对吧,纵坐标就不说了,你的问题应该是横坐标的字母怎么办。其实很简单,你把字母也看成数,1位横坐标是a到z,计数变量1位是0到9。所以本质上是10进制转26进制的问题。至于怎么转,你如果是电子信息相关专业的学生或者从事这个行业应该学过微机原理或者数电等,按权分解就好了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值