Python/Excel — условная печать ячеек с помощью xlrd

Я хочу напечатать только строки определенного столбца, скажем, столбца B, пока все хорошо:

import xlrd
file_location = "/home/myuser/excel.xls"
workbook = xlrd.open_workbook(file_location)
sheet = workbook.sheet_by_index(0)
data = [[sheet.cell_value(r, c) for c in range(sheet.ncols)] for r in range(sheet.nrows)]

for r in data:
    print r[1]

Теперь я хочу распечатать только те значения ячеек, которые имеют желтый фон. Я нашел эту ссылку, но не смог ее принять к моему коду. Кто-нибудь может мне помочь?


person royskatt    schedule 21.06.2014    source источник


Ответы (1)


Если вы знаете конкретный индекс цвета ячеек с желтым фоном, вы можете проверить значение background.pattern_colour_index стиля ячейки. Обратите внимание, что важно передать formatting_info=True в open_workbook():

import xlrd

file_location = "/home/myuser/excel.xls"
workbook = xlrd.open_workbook(file_location, formatting_info=True)
sheet = workbook.sheet_by_index(0)

for row in range(sheet.nrows):
    cell = sheet.cell(row, 1)
    style = workbook.xf_list[cell.xf_index]
    color = style.background.pattern_colour_index
    if color == 43:  # on of yellows
        print cell.value

Пример:

Для файла, содержащего 2 ячейки с желтым фоном:

введите здесь описание изображения

Код выше печатает:

test2
test4
person alecxe    schedule 21.06.2014
comment
Прохладный! Большое тебе спасибо! - person royskatt; 21.06.2014