python怎么实现对excel中需要的数据的单元格填充颜色(excel,python,开发技术)

时间:2024-05-09 19:48:25 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

前言:

一般处理数据使用的是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怎么实现对excel中需要的数据的单元格填充颜色

使用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个

python怎么实现对excel中需要的数据的单元格填充颜色

案例:

这个是我们的数据:

python怎么实现对excel中需要的数据的单元格填充颜色

现在需要把所有大于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')

运行截图:

python怎么实现对excel中需要的数据的单元格填充颜色

python怎么实现对excel中需要的数据的单元格填充颜色

python怎么实现对excel中需要的数据的单元格填充颜色

python怎么实现对excel中需要的数据的单元格填充颜色

python怎么实现对excel中需要的数据的单元格填充颜色

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:python怎么实现对excel中需要的数据的单元格填充颜色的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:python怎么使用prettytable内置库美化输出表格下一篇:

12 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18