2017-04-24 113 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