python怎么实现对excel中需要的数据的单元格填充颜色
导读:本文共2884字符,通常情况下阅读需要10分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 前言:一般处理数据使用的是pandas和numpy库,但是填充单元格颜色需要在excel中,使用的是openpyxl库,所以不能直接达到我们的需求,需要进行两个库的链接使用,先说下openpyxl填充色,pandas是直接读取数据,但是openpyxl则不是,必须要sheet处于active状态,而且必须进行sheet选择才可以读取数据importopenpyx... ...
目录
(为您整理了一些要点),点击可以直达。前言:
一般处理数据使用的是pandas和numpy库,但是填充单元格颜色需要在excel中,使用的是openpyxl库,所以不能直接达到我们的需求,需要进行两个库的链接使用,先说下openpyxl填充色,pandas是直接读取数据,但是openpyxl则不是,必须要sheet处于active状态,而且必须进行sheet选择才可以读取数据
importopenpyxlfromopenpyxlimportload_workbook#比如打开test.xlsxwb=load_work(filename='test.xlsx')#使用第一个sheet作为工作簿work=wb[wb.sheetnames[0]]
openpyxl填充色说明
调用openpyxl中PatternFill
纯色填充使用solid
importopenpyxlfromopenpyxl.stylesimportPatternFill#根据上面的work进行单元格选择#设置样式(填充色)#颜色必须使用hex十六进制并且没有'#'符号列举为黄色fill=PatternFill('solid',fgColor='FFFF00')#填充D4为为黄色d4=work['D4']d4.fill=fill
面临一个问题,我们需要创建Excel的列,比如’A’,‘B’,'C’等等
使用python产生26个英文字母.并进行组合
importmathimportstringdefcycle_letter(arr,level):importstringlist1=string.ascii_uppercasetempArr=[]letterArr=[iforiinlist1]arrNum=len(arr)if(level==0orarrNum==0):returnletterArrforindexinrange(arrNum):forletterinletterArr:tempArr.append(arr[index]+letter)returntempArrdefreduce_excel_col_name(num):tempVal=1level=1while(tempVal):tempVal=num/(math.pow(26,level))if(tempVal>1):level+=1else:breakexcelArr=[]tempArr=[]forindexinrange(level):tempArr=cycle_letter(tempArr,index)fornumIndexinrange(len(tempArr)):if(len(excelArr)<num):excelArr.append(tempArr[numIndex])else:returnexcelArrreturnexcelArr
可以填充数字,产生所需要的excel列
例:产生31个
案例:
这个是我们的数据:
现在需要把所有大于50(不包含50)的数字,进行黄色标注
#导入所需的库importmathimportstringimportopenpyxlimportpandasaspdfromopenpyxlimportload_workbook#如上图,一共10列,从0到9#产生为10的excel对应的列defcycle_letter(arr,level):list1=string.ascii_uppercasetempArr=[]letterArr=[iforiinlist1]arrNum=len(arr)if(level==0orarrNum==0):returnletterArrforindexinrange(arrNum):forletterinletterArr:tempArr.append(arr[index]+letter)returntempArrdefreduce_excel_col_name(num):tempVal=1level=1while(tempVal):tempVal=num/(math.pow(26,level))if(tempVal>1):level+=1else:breakexcelArr=[]tempArr=[]forindexinrange(level):tempArr=cycle_letter(tempArr,index)fornumIndexinrange(len(tempArr)):if(len(excelArr)<num):excelArr.append(tempArr[numIndex])else:returnexcelArrreturnexcelArr#保存到charter_listcharter_list=reduce_excel_col_name(10)#循环data选出所有>50的数字#并取出index和col_index并保存到excel中a=[]b=[]foriinrange(len(data.values)):foryindata.values[i]:ify>50:#获取行数a.append(i)#获取列数a.append(data.values[i].tolist().index(y))b.append(a)a=[]#列表中第一个代表的是行,第二个数字代表的是列#将第二个数使用charter_list产生的代替#因为列表的第二个数对应的也是charter_list的indexforiinb:i[1]=charter_list[i[1]]#这里需要注意的是excel都是从1开始,所以我们的第一个数#行数需要+1,但是因为有列名0,1,2,3到9的存在,所以需要添加一个2foriinb:i[0]=i[0]+2#将列表变为'A2','C2',符合excle的习惯list_color_all=[x[1]+str(x[0])forxinb]#使用load_workbook加载excel数据,进行颜色填充wb=load_workbook(filename='excel_col.xlsx')work=wb[wb.sheetnames[0]]fill=PatternFill("solid",fgColor='FFFF00')foriinlist_color_all:work[i].fill=fillwb.close()wb.save('excel_col.xlsx')
运行截图:
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
python怎么实现对excel中需要的数据的单元格填充颜色的详细内容,希望对您有所帮助,信息来源于网络。