Я пишу python script для чтения данных с листа excel с помощью xlrd. Немногие из ячеек рабочего листа выделены разным цветом, и я хочу идентифицировать цветовой код ячейки. Есть ли способ сделать это? Пример будет действительно оценен.
Идентификация цветового кода ячейки листа Excel с использованием пакета XLRD
Ответ 1
Вот один из способов справиться с этим:
import xlrd
book = xlrd.open_workbook("sample.xls", formatting_info=True)
sheets = book.sheet_names()
print "sheets are:", sheets
for index, sh in enumerate(sheets):
sheet = book.sheet_by_index(index)
print "Sheet:", sheet.name
rows, cols = sheet.nrows, sheet.ncols
print "Number of rows: %s Number of cols: %s" % (rows, cols)
for row in range(rows):
for col in range(cols):
print "row, col is:", row+1, col+1,
thecell = sheet.cell(row, col)
# could get 'dump', 'value', 'xf_index'
print thecell.value,
xfx = sheet.cell_xf_index(row, col)
xf = book.xf_list[xfx]
bgx = xf.background.pattern_colour_index
print bgx
Дополнительная информация о Python-Excel Google Group.
Ответ 2
Эта функция возвращает значение rgb фона ячейки в кортеже.
def getBGColor(book, sheet, row, col):
xfx = sheet.cell_xf_index(row, col)
xf = book.xf_list[xfx]
bgx = xf.background.pattern_colour_index
pattern_colour = book.colour_map[bgx]
#Actually, despite the name, the background colour is not the background colour.
#background_colour_index = xf.background.background_colour_index
#background_colour = book.colour_map[background_colour_index]
return pattern_colour
Ответ 3
Возникла проблема с
"" "rows, cols = sheet.nrows, sheet.ncols" ""
Есть гораздо больше строк, чем внутри таблицы. Есть много повторяющихся строк.
В чем проблема? Благодарю.