2017-04-24 115 views
0

我有一个.xlsx文件,它有3列。获取我的xlsx文件的单元格颜色的计数python

id name age 
1 jon 10  #jon cell is red 
2 bob 54  #bob cell is red 
3 rob 77 
4 sal 22  #sal cell is red 
5 wil 47 
6 nia 32 

在我的column 'name' jon ,bob, sal cell are red colored中,'name'列的其余单元格是绿色的。

我想找到的red colored cells即计数在这种情况下3

这只是一个例子,我有有超过1000行的.xlsx文件,这将是非常困难的人工计数红色细胞。

我尝试了用openpyxl和xlrd但could'nt发现很多

任何线索,将不胜感激,谢谢提前

回答

0

我看看Here

首先,我们需要加载工作簿然后使用该工作簿中的选定工作表进行处理,为此我们执行以下操作:

import openpyxl as px 

#Loading the workbook into python 
wb = px.load_workbook('FileName.xlsx') 

#Selecting Active Sheet 
sheet = wb.get_sheet_by_name('Sheet1') 

第二个答案(在链接中)是相当有帮助的 - 一个可以参照的颜色index做抢单元格颜色的十六进制代码如下:

i = sheet['A1'].fill.start_color.index #Grabbing colour at [A1] 
index_colours = px.styles.colors.COLOR_INDEX 
result = str(index_colours [i]) 

result= "#"+result[2:] 

print result 
#>>>#HEXCODE 

,你可以用这个和读取Excel文件后,所有的代码添加到列表中,例如, :

colour_list = [] 
index_colours = px.styles.colors.COLOR_INDEX 
for row in range(1,all_rows): 

    i = sheet['B' + str(row)].fill.start_color.index 
    result = str(index_colours [i]) 
    result= "#"+result[2:] 
    colour_list.append(result) 

和计数的十六进制代码指的是红

red = '#FF0000' 
print colour_list.count(red) 
#>>> 3 
+0

你是如何加载XLSX文件?进入哪个变量,你如何定义'我'? – Shubham

+0

表['A1'] ??我的表名是sheet1 – Shubham

+0

真的,你应该展示一些尝试回答你自己的问题,因为这不是一个代码写入服务。要学习如何整合Excel和Python,我建议看看[Here](https://automatetheboringstuff.com/chapter12/) – GiantsLoveDeathMetal